in fa mode, when JsParticleAbility connect to other service, it could cause crash with disconnect-callback invalid

Signed-off-by: wangzhen <wangzhen346@huawei.com>
This commit is contained in:
wangzhen
2023-05-10 14:22:42 +08:00
parent de4f7c1985
commit af2f93f765
4 changed files with 9 additions and 7 deletions
@@ -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<JsFeatureAbility>(static_cast<JsFeatureAbility*>(data));
if (pthis) {
pthis->RemoveAllCallbacksLocked();
}
HILOG_INFO("JsFeatureAbility::Finalizer is called");
std::unique_ptr<JsFeatureAbility>(static_cast<JsFeatureAbility*>(data));
}
NativeValue* JsFeatureAbilityInit(NativeEngine *engine, NativeValue *exports)
@@ -28,7 +28,7 @@ namespace AppExecFwk {
class JsNapiCommon {
public:
JsNapiCommon();
virtual ~JsNapiCommon() = default;
virtual ~JsNapiCommon();
struct JsPermissionOptions {
bool uidFlag = false;
@@ -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)
{
@@ -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<JsParticleAbility>(static_cast<JsParticleAbility*>(data));
}