Skip to content

Commit f40cfd4

Browse files
committed
Fix leaked raw_ptr/raw_ref in BraveOriginService
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 2c8c32a commit f40cfd4

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
@@ -73,6 +73,15 @@ BraveOriginService::BraveOriginService(
7373

7474
BraveOriginService::~BraveOriginService() = default;
7575

76+
void BraveOriginService::Shutdown() {
77+
weak_ptr_factory_.InvalidateWeakPtrs();
78+
skus_service_.reset();
79+
local_state_ = nullptr;
80+
profile_prefs_ = nullptr;
81+
profile_policy_service_ = nullptr;
82+
browser_policy_service_ = nullptr;
83+
}
84+
7685
bool BraveOriginService::IsPolicyControlledByBraveOrigin(
7786
std::string_view policy_key) const {
7887
if (!IsBraveOriginEnabled()) {

components/brave_origin/brave_origin_service.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ class BraveOriginService : public KeyedService {
4444
SkusServiceGetter skus_service_getter);
4545
~BraveOriginService() override;
4646

47+
// KeyedService:
48+
void Shutdown() override;
49+
4750
// Check if a policy is controlled by BraveOrigin
4851
bool IsPolicyControlledByBraveOrigin(std::string_view policy_key) const;
4952

0 commit comments

Comments
 (0)