diff options
| author | 2019-08-27 11:43:23 -0700 | |
|---|---|---|
| committer | 2019-08-27 11:43:23 -0700 | |
| commit | 1f13e9ece4714216d5535782c1cc4be01c3b3a8b (patch) | |
| tree | eec02bbc70ed91f8f7a4ed4147243b118b2f8c75 | |
| parent | eccfe58019a1b5fd688828e9f13fbf5a1644fc1c (diff) | |
| parent | 516e4af7c995ffff646016068631ccbab656382e (diff) | |
servicemanager: add sanity check in destructor am: 130242db90
am: 516e4af7c9
Change-Id: Ie4920a33ffb78a24bc6913391f672e903026974e
| -rw-r--r-- | cmds/servicemanager/ServiceManager.cpp | 7 | ||||
| -rw-r--r-- | cmds/servicemanager/ServiceManager.h | 1 |
2 files changed, 8 insertions, 0 deletions
diff --git a/cmds/servicemanager/ServiceManager.cpp b/cmds/servicemanager/ServiceManager.cpp index 4d5c76ab95..119e4c387c 100644 --- a/cmds/servicemanager/ServiceManager.cpp +++ b/cmds/servicemanager/ServiceManager.cpp @@ -25,6 +25,13 @@ using ::android::binder::Status; namespace android { ServiceManager::ServiceManager(std::unique_ptr<Access>&& access) : mAccess(std::move(access)) {} +ServiceManager::~ServiceManager() { + // this should only happen in tests + + for (const auto& [name, service] : mNameToService) { + CHECK(service.binder != nullptr) << name; + } +} Status ServiceManager::getService(const std::string& name, sp<IBinder>* outBinder) { // Servicemanager is single-threaded and cannot block. This method exists for legacy reasons. diff --git a/cmds/servicemanager/ServiceManager.h b/cmds/servicemanager/ServiceManager.h index 78e48052b8..43723c52c7 100644 --- a/cmds/servicemanager/ServiceManager.h +++ b/cmds/servicemanager/ServiceManager.h @@ -25,6 +25,7 @@ namespace android { class ServiceManager : public os::BnServiceManager, public IBinder::DeathRecipient { public: ServiceManager(std::unique_ptr<Access>&& access); + ~ServiceManager(); binder::Status getService(const std::string& name, sp<IBinder>* outBinder) override; binder::Status checkService(const std::string& name, sp<IBinder>* outBinder) override; |