diff --git a/ipc/native/src/napi_common/include/napi_remote_proxy_holder.h b/ipc/native/src/napi_common/include/napi_remote_proxy_holder.h index 42c5a72ddbca8f8aae5a8b8fcc35ddae6f40c36e..868b05fcedca34b66b1104ad524baff983977377 100644 --- a/ipc/native/src/napi_common/include/napi_remote_proxy_holder.h +++ b/ipc/native/src/napi_common/include/napi_remote_proxy_holder.h @@ -34,7 +34,7 @@ public: bool Matches(napi_value object); protected: - virtual ~NAPIDeathRecipient(); + virtual ~NAPIDeathRecipient() = default; private: struct OnRemoteDiedParam { diff --git a/ipc/native/src/napi_common/source/napi_remote_proxy_holder.cpp b/ipc/native/src/napi_common/source/napi_remote_proxy_holder.cpp index d0c0bf5b740d1f613dd333e4f37dbdbbbd04211c..fc1d53f1c7c86e495e8cb55b4373079496ae60c3 100644 --- a/ipc/native/src/napi_common/source/napi_remote_proxy_holder.cpp +++ b/ipc/native/src/napi_common/source/napi_remote_proxy_holder.cpp @@ -33,17 +33,6 @@ NAPIDeathRecipient::NAPIDeathRecipient(napi_env env, napi_value jsDeathRecipient NAPI_ASSERT_RETURN_VOID(env, status == napi_ok, "failed to create ref to js death recipient"); } -NAPIDeathRecipient::~NAPIDeathRecipient() -{ - if (env_ != nullptr) { - if (deathRecipientRef_ != nullptr) { - napi_status status = napi_delete_reference(env_, deathRecipientRef_); - NAPI_ASSERT_RETURN_VOID(env_, status == napi_ok, "failed to delete ref to js death recipient"); - deathRecipientRef_ = nullptr; - } - } -} - void NAPIDeathRecipient::OnRemoteDied(const wptr &object) { if (deathRecipientRef_ == nullptr) { @@ -78,6 +67,9 @@ void NAPIDeathRecipient::OnRemoteDied(const wptr &object) if (returnVal == nullptr) { ZLOGE(LOG_LABEL, "failed to call function onRemoteDied"); } + + napi_status napiStatus = napi_delete_reference(param->env, param->deathRecipientRef); + NAPI_ASSERT_RETURN_VOID(param->env, napiStatus == napi_ok, "failed to delete ref to js death recipient"); delete param; delete work; });