From 233f088c0fc22a8ee0af6fbe524bce610a40c13b Mon Sep 17 00:00:00 2001 From: zwx1066281 Date: Tue, 22 Feb 2022 20:28:40 +0800 Subject: [PATCH] fixed 7ca6af1 from https://gitee.com/zwx1066281/security_access_token/pulls/96 fix js async crash dump Signed-off-by: zwx1066281 --- interfaces/kits/accesstoken/napi/include/napi_atmanager.h | 3 +-- interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp | 8 +++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/interfaces/kits/accesstoken/napi/include/napi_atmanager.h b/interfaces/kits/accesstoken/napi/include/napi_atmanager.h index 3fee43806..850a702fc 100644 --- a/interfaces/kits/accesstoken/napi/include/napi_atmanager.h +++ b/interfaces/kits/accesstoken/napi/include/napi_atmanager.h @@ -34,6 +34,7 @@ namespace AccessToken { #define ACCESSTOKEN_PERMISSION_REVOKE_SUCC 0 #define VALUE_BUFFER_SIZE 128 +static thread_local napi_ref atManagerRef_; const std::string ATMANAGER_CLASS_NAME = "atManager"; struct AtManagerAsyncContext { @@ -74,8 +75,6 @@ private: static void RevokeUserGrantedPermissionComplete(napi_env env, napi_status status, void *data); static void GetPermissionFlagsExcute(napi_env env, void *data); static void GetPermissionFlagsComplete(napi_env env, napi_status status, void *data); - - static napi_ref constructorRef_; }; } // namespace AccessToken } // namespace Security diff --git a/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp b/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp index 4dc7532ad..608b3df63 100644 --- a/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp +++ b/interfaces/kits/accesstoken/napi/src/napi_atmanager.cpp @@ -33,8 +33,6 @@ static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { }; } // namespace -napi_ref NapiAtManager::constructorRef_; - napi_value NapiAtManager::Init(napi_env env, napi_value exports) { ACCESSTOKEN_LOG_DEBUG(LABEL, "enter init."); @@ -55,7 +53,7 @@ napi_value NapiAtManager::Init(napi_env env, napi_value exports) NAPI_CALL(env, napi_define_class(env, ATMANAGER_CLASS_NAME.c_str(), ATMANAGER_CLASS_NAME.size(), JsConstructor, nullptr, sizeof(properties) / sizeof(napi_property_descriptor), properties, &cons)); - NAPI_CALL(env, napi_create_reference(env, cons, 1, &constructorRef_)); + NAPI_CALL(env, napi_create_reference(env, cons, 1, &atManagerRef_)); NAPI_CALL(env, napi_set_named_property(env, exports, ATMANAGER_CLASS_NAME.c_str(), cons)); return exports; @@ -79,11 +77,11 @@ napi_value NapiAtManager::CreateAtManager(napi_env env, napi_callback_info cbInf napi_value instance = nullptr; napi_value cons = nullptr; - if (napi_get_reference_value(env, constructorRef_, &cons) != napi_ok) { + if (napi_get_reference_value(env, atManagerRef_, &cons) != napi_ok) { return nullptr; } - ACCESSTOKEN_LOG_DEBUG(LABEL, "Get a reference to the global variable constructorRef_ complete"); + ACCESSTOKEN_LOG_DEBUG(LABEL, "Get a reference to the global variable atManagerRef_ complete"); if (napi_new_instance(env, cons, 0, nullptr, &instance) != napi_ok) { return nullptr; -- Gitee