diff options
| -rw-r--r-- | libnativeloader/library_namespaces.cpp | 8 | ||||
| -rw-r--r-- | libnativeloader/native_loader_namespace.cpp | 12 | ||||
| -rw-r--r-- | libnativeloader/native_loader_namespace.h | 5 |
3 files changed, 14 insertions, 11 deletions
diff --git a/libnativeloader/library_namespaces.cpp b/libnativeloader/library_namespaces.cpp index 7aa14080ce..b27b268d16 100644 --- a/libnativeloader/library_namespaces.cpp +++ b/libnativeloader/library_namespaces.cpp @@ -432,10 +432,10 @@ Result<NativeLoaderNamespace*> LibraryNamespaces::Create(JNIEnv* env, const std::string product_libs = filter_public_libraries(target_sdk_version, uses_libraries, product_public_libraries()); if (!product_libs.empty()) { - Result<NativeLoaderNamespace> target_ns = system_ns; - if (is_product_treblelized()) { - target_ns = NativeLoaderNamespace::GetExportedNamespace(kProductNamespaceName, is_bridged); - } + Result<NativeLoaderNamespace> target_ns = + is_product_treblelized() + ? NativeLoaderNamespace::GetExportedNamespace(kProductNamespaceName, is_bridged) + : system_ns; if (target_ns.ok()) { linked = app_ns->Link(&target_ns.value(), product_libs); if (!linked.ok()) { diff --git a/libnativeloader/native_loader_namespace.cpp b/libnativeloader/native_loader_namespace.cpp index cfb84b7d9e..98236064d0 100644 --- a/libnativeloader/native_loader_namespace.cpp +++ b/libnativeloader/native_loader_namespace.cpp @@ -69,10 +69,14 @@ Result<NativeLoaderNamespace> NativeLoaderNamespace::GetExportedNamespace(const // "system" for those in the Runtime APEX. Try "system" first since // "default" always exists. Result<NativeLoaderNamespace> NativeLoaderNamespace::GetSystemNamespace(bool is_bridged) { - Result<NativeLoaderNamespace> ns = GetExportedNamespace(kSystemNamespaceName, is_bridged); - if (ns.ok()) return ns; - ns = GetExportedNamespace(kDefaultNamespaceName, is_bridged); - if (ns.ok()) return ns; + if (Result<NativeLoaderNamespace> ns = GetExportedNamespace(kSystemNamespaceName, is_bridged); + ns.ok()) { + return ns; + } + if (Result<NativeLoaderNamespace> ns = GetExportedNamespace(kDefaultNamespaceName, is_bridged); + ns.ok()) { + return ns; + } // If nothing is found, return NativeLoaderNamespace constructed from nullptr. // nullptr also means default namespace to the linker. diff --git a/libnativeloader/native_loader_namespace.h b/libnativeloader/native_loader_namespace.h index 9a5aeac203..4d9ce36434 100644 --- a/libnativeloader/native_loader_namespace.h +++ b/libnativeloader/native_loader_namespace.h @@ -47,7 +47,6 @@ struct NativeLoaderNamespace { NativeLoaderNamespace(NativeLoaderNamespace&&) = default; NativeLoaderNamespace(const NativeLoaderNamespace&) = default; - NativeLoaderNamespace& operator=(const NativeLoaderNamespace&) = default; android_namespace_t* ToRawAndroidNamespace() const { return std::get<0>(raw_); } native_bridge_namespace_t* ToRawNativeBridgeNamespace() const { return std::get<1>(raw_); } @@ -72,8 +71,8 @@ struct NativeLoaderNamespace { explicit NativeLoaderNamespace(const std::string& name, native_bridge_namespace_t* ns) : name_(name), raw_(ns) {} - std::string name_; - std::variant<android_namespace_t*, native_bridge_namespace_t*> raw_; + const std::string name_; + const std::variant<android_namespace_t*, native_bridge_namespace_t*> raw_; }; } // namespace android |