diff options
author | 2024-01-23 06:42:02 +0900 | |
---|---|---|
committer | 2024-01-26 02:43:32 +0900 | |
commit | 9f1c687f36381f1fc45a9f7ca6311fd30bcbdf15 (patch) | |
tree | 129da62e81cfdde574d05c4feb5ec1e2776160f8 | |
parent | d52639e35beec399f3f777b2e3b87ef2b456d770 (diff) |
servicemanager: Fix loop continue/break
in getVintfUpdatableApex, it can break out the outer loop if the nested
forEach find a match.
Bug: n/a
Test: TH
Change-Id: I0261a2d43156a563e9e7fd7e96f89544c0f0fd50
-rw-r--r-- | cmds/servicemanager/ServiceManager.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/cmds/servicemanager/ServiceManager.cpp b/cmds/servicemanager/ServiceManager.cpp index 77989d148b..f2f0a0f037 100644 --- a/cmds/servicemanager/ServiceManager.cpp +++ b/cmds/servicemanager/ServiceManager.cpp @@ -150,7 +150,7 @@ static std::optional<std::string> getVintfUpdatableApex(const std::string& name) std::optional<std::string> updatableViaApex; forEachManifest([&](const ManifestWithDescription& mwd) { - mwd.manifest->forEachInstance([&](const auto& manifestInstance) { + bool cont = mwd.manifest->forEachInstance([&](const auto& manifestInstance) { if (manifestInstance.format() != vintf::HalFormat::AIDL) return true; if (manifestInstance.package() != aname.package) return true; if (manifestInstance.interface() != aname.iface) return true; @@ -158,8 +158,7 @@ static std::optional<std::string> getVintfUpdatableApex(const std::string& name) updatableViaApex = manifestInstance.updatableViaApex(); return false; // break (libvintf uses opposite convention) }); - if (updatableViaApex.has_value()) return true; // break (found match) - return false; // continue + return !cont; }); return updatableViaApex; |