From 90f4dc8025aefa74b34abf93094f5e5f549969af Mon Sep 17 00:00:00 2001 From: liwang <965027894@qq.com> Date: Fri, 29 Aug 2025 14:38:39 +0800 Subject: [PATCH] =?UTF-8?q?sts=5Fsubscribe.cpp=E6=96=87=E4=BB=B6=E4=B8=AD?= =?UTF-8?q?=E9=94=81=E7=9A=84=E4=BD=BF=E7=94=A8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liwang <965027894@qq.com> --- frameworks/ets/ani/include/sts_subscribe.h | 1 - frameworks/ets/ani/src/sts_subscribe.cpp | 16 +++------------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/frameworks/ets/ani/include/sts_subscribe.h b/frameworks/ets/ani/include/sts_subscribe.h index be90cc471..4981d9b12 100644 --- a/frameworks/ets/ani/include/sts_subscribe.h +++ b/frameworks/ets/ani/include/sts_subscribe.h @@ -83,7 +83,6 @@ public: bool IsInit(); bool Compare(ani_env *env, ani_object obj); bool Compare(ani_env *env, ani_ref ref); - bool Compare(std::shared_ptr instance); private: bool CallFunction(ani_env *env, const char* func, std::vector &parm); diff --git a/frameworks/ets/ani/src/sts_subscribe.cpp b/frameworks/ets/ani/src/sts_subscribe.cpp index 524ed688f..f9018270f 100644 --- a/frameworks/ets/ani/src/sts_subscribe.cpp +++ b/frameworks/ets/ani/src/sts_subscribe.cpp @@ -86,6 +86,7 @@ void StsDistributedOperationCallback::OnStsOperationCallback(ani_env *env, const void StsDistributedOperationCallback::SetVm(ani_vm *vm) { + std::lock_guard l(lock_); etsVm_ = vm; } @@ -455,6 +456,7 @@ bool StsSubscriberInstance::IsInit() bool StsSubscriberInstance::Compare(ani_env *env, ani_object obj) { ANS_LOGD("enter"); + std::lock_guard l(lock_); if (!IsInit()) { return false; } @@ -483,19 +485,6 @@ bool StsSubscriberInstance::Compare(ani_env *env, ani_ref ref) env->Reference_StrictEquals(ref, ref_, &result); return (result == ANI_TRUE) ? true : false; } -bool StsSubscriberInstance::Compare(std::shared_ptr instance) -{ - ANS_LOGD("enter"); - if (instance == nullptr) { - return false; - } - if (instance->obj_ == obj_) { - ANS_LOGD("Compare is ture"); - return true; - } - ANS_LOGD("Compare is false"); - return false; -} bool StsSubscriberInstance::CallFunction(ani_env *env, const char *func, std::vector &parm) { ANS_LOGD("enter"); @@ -528,6 +517,7 @@ bool SubscriberInstanceManager::HasNotificationSubscriber( ani_env *env, ani_object value, std::shared_ptr &subscriberInfo) { ANS_LOGD("enter"); + std::lock_guard lock(mutex_); for (auto &iter : subscriberInstances_) { if (iter->Compare(env, value)) { subscriberInfo = iter; -- Gitee