From 19416b7ef15a4bdeb4f259f3b9772b229c0c0275 Mon Sep 17 00:00:00 2001 From: "yang.yang" Date: Thu, 11 Sep 2025 17:21:14 +0800 Subject: [PATCH] fix ai suggest another Signed-off-by: yang.yang Change-Id: I5fbbbda408fa0ac0de800b3146fe01332f1309b5 --- .../ability_delegator_registry.cpp | 21 ++++++++++++++----- .../ability_delegator_registry.h | 2 ++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/frameworks/native/appkit/ability_delegator/ability_delegator_registry.cpp b/frameworks/native/appkit/ability_delegator/ability_delegator_registry.cpp index bfdc3298b9a..490eb1d0579 100644 --- a/frameworks/native/appkit/ability_delegator/ability_delegator_registry.cpp +++ b/frameworks/native/appkit/ability_delegator/ability_delegator_registry.cpp @@ -24,10 +24,13 @@ std::shared_ptr AbilityDelegatorRegistry::abilityDelegator std::shared_ptr AbilityDelegatorRegistry::GetAbilityDelegator( const AbilityRuntime::Runtime::Language &language) { + std::lock_guard lock(delegatorMapMutex_); auto it = abilityDelegator_.find(language); if (it != abilityDelegator_.end()) { - auto p = reinterpret_cast(it->second.get()); - return std::shared_ptr(it->second, p); + auto p = static_cast(it->second.get()); + if (!p) { + return std::shared_ptr(it->second, p); + } } return nullptr; } @@ -35,10 +38,13 @@ std::shared_ptr AbilityDelegatorRegistry::GetAbilityDelegator( #ifdef CJ_FRONTEND std::shared_ptr AbilityDelegatorRegistry::GetCJAbilityDelegator() { + std::lock_guard lock(delegatorMapMutex_); auto it = abilityDelegator_.find(AbilityRuntime::Runtime::Language::CJ); if (it != abilityDelegator_.end()) { - auto p = reinterpret_cast(it->second.get()); - return std::shared_ptr(it->second, p); + auto p = static_cast(it->second.get()); + if (!p) { + return std::shared_ptr(it->second, p); + } } return nullptr; } @@ -46,13 +52,18 @@ std::shared_ptr AbilityDelegatorRegistry::GetCJAbilityDe std::shared_ptr AbilityDelegatorRegistry::GetArguments() { + std::lock_guard lock(delegatorArgsMutex_); return abilityDelegatorArgs_; } void AbilityDelegatorRegistry::RegisterInstance(const std::shared_ptr &delegator, const std::shared_ptr &args, const AbilityRuntime::Runtime::Language &language) { - abilityDelegatorArgs_ = args; + { + std::lock_guard lock(delegatorArgsMutex_); + abilityDelegatorArgs_ = args; + } + std::lock_guard lock(delegatorMapMutex_); abilityDelegator_.insert_or_assign(language, delegator); } } // namespace AppExecFwk diff --git a/interfaces/kits/native/appkit/ability_delegator/ability_delegator_registry.h b/interfaces/kits/native/appkit/ability_delegator/ability_delegator_registry.h index 57f9c383be7..973ad02022f 100644 --- a/interfaces/kits/native/appkit/ability_delegator/ability_delegator_registry.h +++ b/interfaces/kits/native/appkit/ability_delegator/ability_delegator_registry.h @@ -68,6 +68,8 @@ public: private: static std::map> abilityDelegator_; static std::shared_ptr abilityDelegatorArgs_; + static std::mutex delegatorMapMutex_; + static std::mutex delegatorArgsMutex_; }; } // namespace AppExecFwk } // namespace OHOS -- Gitee