From af2f93f765fead29ae2c052fda533f5e32f58524 Mon Sep 17 00:00:00 2001 From: wangzhen Date: Wed, 10 May 2023 14:22:42 +0800 Subject: [PATCH] in fa mode, when JsParticleAbility connect to other service, it could cause crash with disconnect-callback invalid Signed-off-by: wangzhen --- frameworks/js/napi/featureAbility/feature_ability.cpp | 7 ++----- .../inner/napi_ability_common/js_napi_common_ability.h | 2 +- .../napi/inner/napi_ability_common/napi_common_ability.cpp | 5 +++++ frameworks/js/napi/particleAbility/particle_ability.cpp | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/frameworks/js/napi/featureAbility/feature_ability.cpp b/frameworks/js/napi/featureAbility/feature_ability.cpp index 617b747241..c412d5cb05 100644 --- a/frameworks/js/napi/featureAbility/feature_ability.cpp +++ b/frameworks/js/napi/featureAbility/feature_ability.cpp @@ -106,11 +106,8 @@ private: void JsFeatureAbility::Finalizer(NativeEngine *engine, void *data, void *hint) { - HILOG_DEBUG("JsFeatureAbility::Finalizer is called"); - auto pthis = std::unique_ptr(static_cast(data)); - if (pthis) { - pthis->RemoveAllCallbacksLocked(); - } + HILOG_INFO("JsFeatureAbility::Finalizer is called"); + std::unique_ptr(static_cast(data)); } NativeValue* JsFeatureAbilityInit(NativeEngine *engine, NativeValue *exports) diff --git a/frameworks/js/napi/inner/napi_ability_common/js_napi_common_ability.h b/frameworks/js/napi/inner/napi_ability_common/js_napi_common_ability.h index 554d2d8855..b03b8c2bf2 100644 --- a/frameworks/js/napi/inner/napi_ability_common/js_napi_common_ability.h +++ b/frameworks/js/napi/inner/napi_ability_common/js_napi_common_ability.h @@ -28,7 +28,7 @@ namespace AppExecFwk { class JsNapiCommon { public: JsNapiCommon(); - virtual ~JsNapiCommon() = default; + virtual ~JsNapiCommon(); struct JsPermissionOptions { bool uidFlag = false; diff --git a/frameworks/js/napi/inner/napi_ability_common/napi_common_ability.cpp b/frameworks/js/napi/inner/napi_ability_common/napi_common_ability.cpp index 4eb0ca0625..f16e2ee089 100644 --- a/frameworks/js/napi/inner/napi_ability_common/napi_common_ability.cpp +++ b/frameworks/js/napi/inner/napi_ability_common/napi_common_ability.cpp @@ -3982,6 +3982,11 @@ napi_value NAPI_CancelBackgroundRunningCommon(napi_env env, napi_callback_info i JsNapiCommon::JsNapiCommon() : ability_(nullptr) {} +JsNapiCommon::~JsNapiCommon() +{ + RemoveAllCallbacksLocked(); +} + NativeValue* JsNapiCommon::JsConnectAbility( NativeEngine &engine, NativeCallbackInfo &info, const AbilityType abilityType) { diff --git a/frameworks/js/napi/particleAbility/particle_ability.cpp b/frameworks/js/napi/particleAbility/particle_ability.cpp index 00d1896f30..42f81d00d4 100644 --- a/frameworks/js/napi/particleAbility/particle_ability.cpp +++ b/frameworks/js/napi/particleAbility/particle_ability.cpp @@ -201,7 +201,7 @@ napi_value ParticleAbilityInit(napi_env env, napi_value exports) void JsParticleAbility::Finalizer(NativeEngine *engine, void *data, void *hint) { - HILOG_INFO("JsWantAgent::Finalizer is called"); + HILOG_INFO("JsParticleAbility::Finalizer is called"); std::unique_ptr(static_cast(data)); }