Skip to content

Commit fb3dc2f

Browse files
netzenbotbbondy
authored andcommitted
Fix leaked raw_ptr/raw_ref in BraveOriginService (#34275)
Override KeyedService::Shutdown() to clean up raw_ptr members and invalidate weak pointers before the service is destroyed. Without this, the defaulted destructor detects dangling raw_ptr references to PrefService and PolicyService objects that are already freed during the profile teardown sequence. Resolves brave/brave-browser#52757
1 parent 60629ef commit fb3dc2f

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

components/brave_origin/brave_origin_service.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ BraveOriginService::BraveOriginService(
5353

5454
BraveOriginService::~BraveOriginService() = default;
5555

56+
void BraveOriginService::Shutdown() {
57+
weak_ptr_factory_.InvalidateWeakPtrs();
58+
skus_service_.reset();
59+
local_state_ = nullptr;
60+
profile_prefs_ = nullptr;
61+
profile_policy_service_ = nullptr;
62+
browser_policy_service_ = nullptr;
63+
}
64+
5665
bool BraveOriginService::IsPolicyControlledByBraveOrigin(
5766
std::string_view policy_key) const {
5867
if (!IsBraveOriginEnabled()) {

components/brave_origin/brave_origin_service.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ class BraveOriginService : public KeyedService {
3535
policy::PolicyService* browser_policy_service);
3636
~BraveOriginService() override;
3737

38+
// KeyedService:
39+
void Shutdown() override;
40+
3841
// Check if a policy is controlled by BraveOrigin
3942
bool IsPolicyControlledByBraveOrigin(std::string_view policy_key) const;
4043

0 commit comments

Comments
 (0)