diff --git a/services/native/file_access_service/include/file_access_service.h b/services/native/file_access_service/include/file_access_service.h index b70b92226d7c6af1426433f80d5a400ad7d589ae..26831de997fd146c584efde83f28d45d0e87d5fd 100644 --- a/services/native/file_access_service/include/file_access_service.h +++ b/services/native/file_access_service/include/file_access_service.h @@ -277,6 +277,7 @@ private: std::mutex nodeMutex_; std::unordered_map> relationshipMap_; HolderManager> obsManager_; + std::mutex mapMutex_; std::unordered_map> cMap_; }; } // namespace FileAccessFwk diff --git a/services/native/file_access_service/src/file_access_service.cpp b/services/native/file_access_service/src/file_access_service.cpp index 4811f71c996385801d4666e42649db09c8390cb3..d5f8aabd02e66e497320c073e0022b87fd137af5 100644 --- a/services/native/file_access_service/src/file_access_service.cpp +++ b/services/native/file_access_service/src/file_access_service.cpp @@ -179,7 +179,7 @@ sptr FileAccessService::ConnectExtension(Uri &uri, const sha { string bundleName; GetBundleNameFromUri(uri, bundleName); - lock_guard lock(mutex_); + lock_guard lock(mapMutex_); auto iterator = cMap_.find(bundleName); if (iterator != cMap_.end()) { return iterator->second; @@ -198,6 +198,7 @@ sptr FileAccessService::ConnectExtension(Uri &uri, const sha void FileAccessService::ResetProxy(const wptr &remote) { if (remote != nullptr && extensionDeathRecipient_ != nullptr) { + lock_guard lock(mapMutex_); for (auto iter = cMap_.begin(); iter != cMap_.end(); ++iter) { auto proxyRemote = iter->second->AsObject(); if (proxyRemote != nullptr && proxyRemote== remote.promote()) {