From ce246b410d8a68beed18e1cfc550f293ac213e37 Mon Sep 17 00:00:00 2001 From: zhangzezhong Date: Tue, 22 Jul 2025 20:08:20 +0800 Subject: [PATCH] fix cpp crash bug Signed-off-by: zhangzezhong --- .../ani/ani_common/src/ets_enviroment_callback.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/frameworks/ets/ani/ani_common/src/ets_enviroment_callback.cpp b/frameworks/ets/ani/ani_common/src/ets_enviroment_callback.cpp index ca8816f1ce4..baf76e8eb99 100644 --- a/frameworks/ets/ani/ani_common/src/ets_enviroment_callback.cpp +++ b/frameworks/ets/ani/ani_common/src/ets_enviroment_callback.cpp @@ -47,8 +47,11 @@ int32_t EtsEnviromentCallback::Register(ani_object aniCallback) serialNumber_ = 0; } ani_ref aniCallbackRef = nullptr; - env_->GlobalReference_Create(aniCallback, &aniCallbackRef); - + ani_status status = ANI_ERROR; + if ((status = env_->GlobalReference_Create(aniCallback, &aniCallbackRef)) != ANI_OK) { + TAG_LOGE(AAFwkTag::APPKIT, "GlobalReference_Create status: %{public}d", status); + return -1; + } std::lock_guard lock(Mutex_); enviromentAniCallbacks_.emplace(callbackId, aniCallbackRef); return callbackId; @@ -63,6 +66,11 @@ bool EtsEnviromentCallback::UnRegister(int32_t callbackId) return false; } TAG_LOGD(AAFwkTag::APPKIT, "callbacks_.callbackId: %{public}d", it->first); + ani_status status = ANI_ERROR; + if ((status = env_->GlobalReference_Delete(it->second)) != ANI_OK) { + TAG_LOGE(AAFwkTag::APPKIT, "GlobalReference_Delete status: %{public}d", status); + return false; + } return enviromentAniCallbacks_.erase(callbackId) == 1; } -- Gitee