From 409a382f6c632aaf296ce1de48ab0826b0758eaa Mon Sep 17 00:00:00 2001 From: hunili Date: Fri, 21 Jun 2024 15:44:01 +0800 Subject: [PATCH] Add lock for map issue: https://gitee.com/openharmony/filemanagement_user_file_service/issues/IA79OT Signed-off-by: hunili --- .../native/file_access_service/include/file_access_service.h | 1 + .../native/file_access_service/src/file_access_service.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) 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 b70b9222..26831de9 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 4811f71c..d5f8aabd 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()) { -- Gitee