From 832d8fbd59d563c2f42b00ad09e23cbf70bc1430 Mon Sep 17 00:00:00 2001 From: yuanbo Date: Sat, 28 May 2022 08:16:38 +0800 Subject: [PATCH] fix: remove member access of IRmoteObject Signed-off-by: yuanbo --- uhdf2/ipc/include/hdf_remote_adapter.h | 1 + uhdf2/ipc/src/hdf_remote_adapter.cpp | 15 ++++++--------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/uhdf2/ipc/include/hdf_remote_adapter.h b/uhdf2/ipc/include/hdf_remote_adapter.h index e5153dc..44dfce4 100644 --- a/uhdf2/ipc/include/hdf_remote_adapter.h +++ b/uhdf2/ipc/include/hdf_remote_adapter.h @@ -56,6 +56,7 @@ struct HdfRemoteServiceHolder { struct HdfRemoteService service_; OHOS::sptr remote_; OHOS::sptr deathRecipient_; + std::u16string descriptor_; }; struct HdfRemoteService *HdfRemoteAdapterBind(OHOS::sptr binder); diff --git a/uhdf2/ipc/src/hdf_remote_adapter.cpp b/uhdf2/ipc/src/hdf_remote_adapter.cpp index 0d0600e..75448ec 100644 --- a/uhdf2/ipc/src/hdf_remote_adapter.cpp +++ b/uhdf2/ipc/src/hdf_remote_adapter.cpp @@ -133,7 +133,7 @@ HdfRemoteServiceHolder::HdfRemoteServiceHolder() : remote_(nullptr), deathRecipi bool HdfRemoteServiceHolder::SetInterfaceDescriptor(const char *desc) { - if (remote_ == nullptr || desc == nullptr) { + if (desc == nullptr) { return false; } std::u16string newDesc = OHOS::Str8ToStr16(std::string(desc)); @@ -141,10 +141,8 @@ bool HdfRemoteServiceHolder::SetInterfaceDescriptor(const char *desc) HDF_LOGE("failed to set interface des, error on cover str8 to str16, %{public}s", desc); return false; } - static std::mutex descMutex; - std::lock_guard lock(descMutex); - (const_cast(&remote_->descriptor_))->assign(newDesc); + descriptor_.assign(newDesc); return true; } @@ -335,11 +333,11 @@ bool HdfRemoteAdapterWriteInterfaceToken(struct HdfRemoteService *service, struc HDF_LOGE("failed to write interface token, holder->remote is nullptr"); return false; } - if (holder->remote_->GetObjectDescriptor().empty()) { + if (holder->descriptor_.empty()) { HDF_LOGE("failed to write interface token, empty token"); return false; } - return parcel->WriteInterfaceToken(holder->remote_->GetObjectDescriptor()); + return parcel->WriteInterfaceToken(holder->descriptor_); } bool HdfRemoteAdapterCheckInterfaceToken(struct HdfRemoteService *service, struct HdfSBuf *data) @@ -361,9 +359,8 @@ bool HdfRemoteAdapterCheckInterfaceToken(struct HdfRemoteService *service, struc HDF_LOGE("failed to check interface, empty token"); return false; } - if (holder->remote_->GetObjectDescriptor() != desc) { - std::string descStr8 = OHOS::Str16ToStr8(desc); - HDF_LOGE("calling unknown interface: %{public}s", descStr8.c_str()); + if (holder->descriptor_ != desc) { + HDF_LOGE("calling unknown interface: %{public}s", OHOS::Str16ToStr8(desc).c_str()); return false; } -- Gitee