diff --git a/services/dbinder/dbinder_service/src/dbinder_service.cpp b/services/dbinder/dbinder_service/src/dbinder_service.cpp index 1e41c6d1fddecbc669babf52cdbca1753a0cdb67..2e186912928be1c3679331052e4a4f3d25838b78 100755 --- a/services/dbinder/dbinder_service/src/dbinder_service.cpp +++ b/services/dbinder/dbinder_service/src/dbinder_service.cpp @@ -555,29 +555,25 @@ bool DBinderService::RegisterRemoteProxy(std::u16string serviceName, sptr lockGuard(remoteBinderMutex_); - - // clear historical remnants, Don't care if it succeeds - (void)mapRemoteBinderObjects_.erase(serviceName); - auto result = mapRemoteBinderObjects_.insert(std::pair(serviceName, binder)); - return result.second; + return RegisterRemoteProxyInner(serviceName, binder); } bool DBinderService::RegisterRemoteProxy(std::u16string serviceName, int32_t systemAbilityId) { DBINDER_LOGI("register remote proxy, service name = %{public}s", Str16ToStr8(serviceName).c_str()); - if (serviceName.length() == 0) { + if (serviceName.length() == 0 || systemAbilityId <= 0) { DBINDER_LOGE("serviceName.length() = %zu", serviceName.length()); return false; } binder_uintptr_t binder = (binder_uintptr_t)systemAbilityId; - DBINDER_LOGI("register remote proxy"); + return RegisterRemoteProxyInner(serviceName, binder); +} +bool DBinderService::RegisterRemoteProxyInner(std::u16string serviceName, binder_uintptr_t binder) +{ std::unique_lock lockGuard(remoteBinderMutex_); - // clear historical remnants, Don't care if it succeeds (void)mapRemoteBinderObjects_.erase(serviceName); auto result = mapRemoteBinderObjects_.insert(std::pair(serviceName, binder));