diff options
author | Dimitry Ivanov <dimitry@google.com> | 2016-02-22 13:02:35 -0800 |
---|---|---|
committer | Dimitry Ivanov <dimitry@google.com> | 2016-02-22 13:15:28 -0800 |
commit | 34fa704df45c5f74aeb5230e4bf3930585cf32fb (patch) | |
tree | 594590801af3912d0ffa1a6c971ab6dc4cd18bba /libnativeloader/native_loader.cpp | |
parent | d633106d3e43a77bb509ce1cf259b14f78f246ae (diff) |
nativeloader: refactor FindNamespaceByClassLoader method
FindNamespaceByClassLoader returns android_namespace_t* to make
it suitable for exporting this functionality.
Bug: http://b/27189432
Change-Id: Ifef3de753192178e0184fb114596fe956fde2826
Diffstat (limited to 'libnativeloader/native_loader.cpp')
-rw-r--r-- | libnativeloader/native_loader.cpp | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/libnativeloader/native_loader.cpp b/libnativeloader/native_loader.cpp index a7a071387..5d35523f2 100644 --- a/libnativeloader/native_loader.cpp +++ b/libnativeloader/native_loader.cpp @@ -79,10 +79,10 @@ class LibraryNamespaces { std::lock_guard<std::mutex> guard(mutex_); - auto it = FindNamespaceByClassLoader(env, class_loader); + android_namespace_t* ns = FindNamespaceByClassLoader(env, class_loader); - if (it != namespaces_.end()) { - return it->second; + if (ns != nullptr) { + return ns; } uint64_t namespace_type = ANDROID_NAMESPACE_TYPE_ISOLATED; @@ -90,14 +90,13 @@ class LibraryNamespaces { namespace_type |= ANDROID_NAMESPACE_TYPE_SHARED; } - android_namespace_t* ns = - android_create_namespace("classloader-namespace", - nullptr, - library_path.c_str(), - namespace_type, - java_permitted_path != nullptr ? - permitted_path.c_str() : - nullptr); + ns = android_create_namespace("classloader-namespace", + nullptr, + library_path.c_str(), + namespace_type, + java_permitted_path != nullptr ? + permitted_path.c_str() : + nullptr); namespaces_.push_back(std::make_pair(env->NewWeakGlobalRef(class_loader), ns)); @@ -122,12 +121,12 @@ class LibraryNamespaces { return initialized_; } - std::vector<std::pair<jweak, android_namespace_t*>>::const_iterator - FindNamespaceByClassLoader(JNIEnv* env, jobject class_loader) { - return std::find_if(namespaces_.begin(), namespaces_.end(), - [&](const std::pair<jweak, android_namespace_t*>& value) { - return env->IsSameObject(value.first, class_loader); - }); + 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_; |