diff --git a/adapter/uhdf2/hdi/src/object_collector.cpp b/adapter/uhdf2/hdi/src/object_collector.cpp index 8ddcba88f2ec9ac29b2a40346b336b1344b55af1..ac6bee61b048a72425bbeda2e6e30d77a1fb3490 100644 --- a/adapter/uhdf2/hdi/src/object_collector.cpp +++ b/adapter/uhdf2/hdi/src/object_collector.cpp @@ -82,10 +82,10 @@ RETRY: OsalMSleep(1); goto RETRY; } - return it->second; + return it->second.GetRefPtr(); } sptr object = NewObjectLocked(interface, interfaceName); - interfaceObjectCollector_[interface.GetRefPtr()] = object.GetRefPtr(); + interfaceObjectCollector_[interface.GetRefPtr()] = object; return object; } diff --git a/framework/tools/hdi-gen/codegen/cpp_service_stub_code_emitter.cpp b/framework/tools/hdi-gen/codegen/cpp_service_stub_code_emitter.cpp index 257a4335fc273b7245a905a92247e121edb9180e..bd034723f7294aac200cb0b1d2188b03a6fe4b99 100644 --- a/framework/tools/hdi-gen/codegen/cpp_service_stub_code_emitter.cpp +++ b/framework/tools/hdi-gen/codegen/cpp_service_stub_code_emitter.cpp @@ -330,6 +330,7 @@ void CppServiceStubCodeEmitter::EmitStubConstructorImpl(StringBuilder &sb, const sb.Append(prefix).AppendFormat( "%s::~%s()\n", EmitDefinitionByInterface(interface_, stubName_).c_str(), stubName_.c_str()); sb.Append(prefix).Append("{\n"); + sb.Append(prefix + TAB).Append("HDF_LOGI(\"%{public}s enter\", __func__);\n"); sb.Append(prefix + TAB).Append("ObjectCollector::GetInstance().RemoveObject(impl_);\n"); sb.Append(prefix).Append("}\n"); } diff --git a/interfaces/inner_api/hdi/object_collector.h b/interfaces/inner_api/hdi/object_collector.h index 653b69b1046fc80dc180cdaf0b7b24f040f90597..a78a4317e689f3592c129155ab463293b3c07747 100644 --- a/interfaces/inner_api/hdi/object_collector.h +++ b/interfaces/inner_api/hdi/object_collector.h @@ -79,7 +79,7 @@ private: /** Define the mapping between the interface name and the constructor. */ std::map constructorMapper_; /** Define the mapping between the interface implementation and the object. */ - std::map interfaceObjectCollector_; + std::map> interfaceObjectCollector_; /** Define a mutex to support concurrent access to the ObjectCollector. */ std::mutex mutex_; };