diff --git a/interfaces/innerkits/local_code_sign/include/local_code_sign_client.h b/interfaces/innerkits/local_code_sign/include/local_code_sign_client.h index a20e60915f240a934d53668276394acd8ae8a4d5..b5552e0232c5b3da363acf6eb30298790fea0b19 100644 --- a/interfaces/innerkits/local_code_sign/include/local_code_sign_client.h +++ b/interfaces/innerkits/local_code_sign/include/local_code_sign_client.h @@ -49,7 +49,7 @@ private: }; LocalCodeSignClient(); - ~LocalCodeSignClient() = default; + ~LocalCodeSignClient(); LocalCodeSignClient(const LocalCodeSignClient &source) = delete; LocalCodeSignClient &operator = (const LocalCodeSignClient &source) = delete; diff --git a/interfaces/innerkits/local_code_sign/src/local_code_sign_client.cpp b/interfaces/innerkits/local_code_sign/src/local_code_sign_client.cpp index 10abb5b077e93795f5274ba2ca85d68e866ae69a..b599ece85d5154d17274e8f88cdcbd9833a90f4c 100644 --- a/interfaces/innerkits/local_code_sign/src/local_code_sign_client.cpp +++ b/interfaces/innerkits/local_code_sign/src/local_code_sign_client.cpp @@ -36,6 +36,15 @@ LocalCodeSignClient::LocalCodeSignClient() } } +LocalCodeSignClient::~LocalCodeSignClient() +{ + std::lock_guard lock(proxyMutex_); + if (localCodeSignProxy_ != nullptr && localCodeSignSvrRecipient_ != nullptr) { + localCodeSignProxy_->AsObject()->RemoveDeathRecipient(localCodeSignSvrRecipient_); + } + localCodeSignSvrRecipient_ = nullptr; +} + void LocalCodeSignClient::LocalCodeSignSvrRecipient::OnRemoteDied(const wptr &remote) { if (remote == nullptr) {