diff options
Diffstat (limited to 'cmds/statsd/src/external/StatsPullerManager.cpp')
-rw-r--r-- | cmds/statsd/src/external/StatsPullerManager.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/cmds/statsd/src/external/StatsPullerManager.cpp b/cmds/statsd/src/external/StatsPullerManager.cpp index ebe961014336..cfd5d14b0d3b 100644 --- a/cmds/statsd/src/external/StatsPullerManager.cpp +++ b/cmds/statsd/src/external/StatsPullerManager.cpp @@ -252,9 +252,13 @@ void StatsPullerManager::RegisterPullUidProvider(const ConfigKey& configKey, mPullUidProviders[configKey] = provider; } -void StatsPullerManager::UnregisterPullUidProvider(const ConfigKey& configKey) { +void StatsPullerManager::UnregisterPullUidProvider(const ConfigKey& configKey, + wp<PullUidProvider> provider) { std::lock_guard<std::mutex> _l(mLock); - mPullUidProviders.erase(configKey); + const auto& it = mPullUidProviders.find(configKey); + if (it != mPullUidProviders.end() && it->second == provider) { + mPullUidProviders.erase(it); + } } void StatsPullerManager::OnAlarmFired(int64_t elapsedTimeNs) { |