diff --git a/frameworks/js/napi/accesstoken/src/napi_atmanager.cpp b/frameworks/js/napi/accesstoken/src/napi_atmanager.cpp index 60e1a87cb4af58eeb437491a2165ad9d45042c14..b7e672a003786097334cf4170dd1f068884539e7 100644 --- a/frameworks/js/napi/accesstoken/src/napi_atmanager.cpp +++ b/frameworks/js/napi/accesstoken/src/napi_atmanager.cpp @@ -1365,7 +1365,8 @@ bool NapiAtManager::FillPermStateChangeInfo(const napi_env env, const napi_value if (subscriber == nullptr) { return false; } - napi_wrap(env, thisVar, reinterpret_cast(subscriber), [](napi_env nev, void *data, void *hint) { + napi_status status = napi_wrap(env, thisVar, reinterpret_cast(subscriber), + [](napi_env nev, void *data, void *hint) { std::shared_ptr* subscriber = static_cast*>(data); if (subscriber != nullptr && *subscriber != nullptr) { @@ -1373,6 +1374,12 @@ bool NapiAtManager::FillPermStateChangeInfo(const napi_env env, const napi_value delete subscriber; } }, nullptr, nullptr); + if (status != napi_ok) { + LOGE(ATM_DOMAIN, ATM_TAG, "Failed to wrap subscriber obj!"); + delete subscriber; + subscriber = nullptr; + return false; + } return true; }