!9107 wantAgent重复析构问题

Merge pull request !9107 from XKK/0620wantParams
This commit is contained in:
openharmony_ci
2024-06-26 08:55:08 +00:00
committed by Gitee
2 changed files with 7 additions and 5 deletions
@@ -75,7 +75,7 @@ void TriggerCompleteCallBack::SetCallbackInfo(napi_env env, NativeReference* ref
triggerCompleteInfo_.nativeRef.reset(ref);
}
void TriggerCompleteCallBack::SetWantAgentInstance(WantAgent* wantAgent)
void TriggerCompleteCallBack::SetWantAgentInstance(std::shared_ptr<WantAgent> wantAgent)
{
triggerCompleteInfo_.wantAgent = wantAgent;
}
@@ -222,7 +222,9 @@ void TriggerCompleteCallBack::OnSendFinished(
dataWorker->resultExtras = resultExtras;
dataWorker->env = triggerCompleteInfo_.env;
dataWorker->nativeRef = std::move(triggerCompleteInfo_.nativeRef);
dataWorker->wantAgent = triggerCompleteInfo_.wantAgent;
if (triggerCompleteInfo_.wantAgent != nullptr) {
dataWorker->wantAgent = new WantAgent(triggerCompleteInfo_.wantAgent->GetPendingWant());
}
work->data = static_cast<void *>(dataWorker);
int ret = uv_queue_work(loop, work, [](uv_work_t *work) {}, OnSendFinishedUvAfterWorkCallback);
if (ret != 0) {
@@ -745,7 +747,7 @@ int32_t JsWantAgent::UnWrapTriggerInfoParam(napi_env env, napi_callback_info inf
napi_ref ref = nullptr;
napi_create_reference(env, argv[ARGC_TWO], 1, &ref);
triggerObj->SetCallbackInfo(env, reinterpret_cast<NativeReference*>(ref));
triggerObj->SetWantAgentInstance(pWantAgent);
triggerObj->SetWantAgentInstance(std::make_shared<WantAgent>(pWantAgent->GetPendingWant()));
return BUSINESS_ERROR_CODE_OK;
}
@@ -51,7 +51,7 @@ const uint8_t NUMBER_OF_PARAMETERS_NINE = 9;
class TriggerCompleteCallBack;
struct CallbackInfo {
WantAgent* wantAgent = nullptr;
std::shared_ptr<WantAgent> wantAgent;
napi_env env = nullptr;
std::unique_ptr<NativeReference> nativeRef = nullptr;
};
@@ -123,7 +123,7 @@ public:
void OnSendFinished(const AAFwk::Want &want, int resultCode, const std::string &resultData,
const AAFwk::WantParams &resultExtras) override;
void SetCallbackInfo(napi_env env, NativeReference* ref);
void SetWantAgentInstance(WantAgent* wantAgent);
void SetWantAgentInstance(std::shared_ptr<WantAgent> wantAgent);
private:
CallbackInfo triggerCompleteInfo_;