Merge "Merge 24Q3 to AOSP main" into main
diff --git a/libs/binder/IServiceManager.cpp b/libs/binder/IServiceManager.cpp
index 8a90ce2..88761d7 100644
--- a/libs/binder/IServiceManager.cpp
+++ b/libs/binder/IServiceManager.cpp
@@ -157,7 +157,7 @@
 
 class AccessorProvider {
 public:
-    AccessorProvider(RpcAccessorProvider&& provider) : mProvider(provider) {}
+    AccessorProvider(RpcAccessorProvider&& provider) : mProvider(std::move(provider)) {}
     sp<IBinder> provide(const String16& name) { return mProvider(name); }
 
 private:
@@ -168,7 +168,8 @@
 
 class AccessorProviderEntry {
 public:
-    AccessorProviderEntry(std::shared_ptr<AccessorProvider>&& provider) : mProvider(provider) {}
+    AccessorProviderEntry(std::shared_ptr<AccessorProvider>&& provider)
+          : mProvider(std::move(provider)) {}
     std::shared_ptr<AccessorProvider> mProvider;
 
 private:
@@ -183,7 +184,7 @@
 class LocalAccessor : public android::os::BnAccessor {
 public:
     LocalAccessor(const String16& instance, RpcSocketAddressProvider&& connectionInfoProvider)
-          : mInstance(instance), mConnectionInfoProvider(connectionInfoProvider) {
+          : mInstance(instance), mConnectionInfoProvider(std::move(connectionInfoProvider)) {
         LOG_ALWAYS_FATAL_IF(!mConnectionInfoProvider,
                             "LocalAccessor object needs a valid connection info provider");
     }
@@ -321,9 +322,10 @@
     std::lock_guard<std::mutex> lock(gAccessorProvidersMutex);
     std::shared_ptr<AccessorProvider> provider =
             std::make_shared<AccessorProvider>(std::move(providerCallback));
+    std::weak_ptr<AccessorProvider> receipt = provider;
     gAccessorProviders.push_back(AccessorProviderEntry(std::move(provider)));
 
-    return provider;
+    return receipt;
 }
 
 status_t removeAccessorProvider(std::weak_ptr<AccessorProvider> wProvider) {