diff options
Diffstat (limited to 'libnativeloader/native_loader.cpp')
-rw-r--r-- | libnativeloader/native_loader.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/libnativeloader/native_loader.cpp b/libnativeloader/native_loader.cpp index 5d35523f2..a64b9720c 100644 --- a/libnativeloader/native_loader.cpp +++ b/libnativeloader/native_loader.cpp @@ -103,6 +103,14 @@ class LibraryNamespaces { return ns; } + android_namespace_t* FindNamespaceByClassLoader(JNIEnv* env, jobject class_loader) { + auto it = std::find_if(namespaces_.begin(), namespaces_.end(), + [&](const std::pair<jweak, android_namespace_t*>& value) { + return env->IsSameObject(value.first, class_loader); + }); + return it != namespaces_.end() ? it->second : nullptr; + } + private: void PreloadPublicLibraries() { // android_init_namespaces() expects all the public libraries @@ -121,14 +129,6 @@ class LibraryNamespaces { return initialized_; } - android_namespace_t* FindNamespaceByClassLoader(JNIEnv* env, jobject class_loader) { - auto it = std::find_if(namespaces_.begin(), namespaces_.end(), - [&](const std::pair<jweak, android_namespace_t*>& value) { - return env->IsSameObject(value.first, class_loader); - }); - return it != namespaces_.end() ? it->second : nullptr; - } - bool initialized_; std::mutex mutex_; std::vector<std::pair<jweak, android_namespace_t*>> namespaces_; @@ -168,4 +168,10 @@ void* OpenNativeLibrary(JNIEnv* env, int32_t target_sdk_version, const char* pat #endif } +#if defined(__ANDROID__) +android_namespace_t* FindNamespaceByClassLoader(JNIEnv* env, jobject class_loader) { + return g_namespaces->FindNamespaceByClassLoader(env, class_loader); +} +#endif + }; // android namespace |