summaryrefslogtreecommitdiff
path: root/runtime/java_vm_ext.cc
diff options
context:
space:
mode:
author Andreas Gampe <agampe@google.com> 2016-06-17 12:46:14 -0700
committer Andreas Gampe <agampe@google.com> 2016-06-20 14:35:18 -0700
commit2d48e53b3893b608969d597cd35436be770588fc (patch)
tree60cf5b104ecefe552dee9010868e11d3621e0ed5 /runtime/java_vm_ext.cc
parent34cfc661a5f291b1af710a90c65d846b6b43d30e (diff)
ART: Use null for the BootClassLoader in LoadLibrary
We must translate the fake BootClassLoader object to the internally used null when loading libraries. Bug: 29449194 Test: test-art-host (cherry picked from commit f7e0db0ce1170b88043f7eb6afcc93c861c4611d) Change-Id: I823d34e209149b5b96529a423c60a1d77bf8e9d1
Diffstat (limited to 'runtime/java_vm_ext.cc')
-rw-r--r--runtime/java_vm_ext.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc
index c2164126e1..c644cde5db 100644
--- a/runtime/java_vm_ext.cc
+++ b/runtime/java_vm_ext.cc
@@ -742,8 +742,14 @@ bool JavaVMExt::LoadNativeLibrary(JNIEnv* env,
// As the incoming class loader is reachable/alive during the call of this function,
// it's okay to decode it without worrying about unexpectedly marking it alive.
mirror::ClassLoader* loader = soa.Decode<mirror::ClassLoader*>(class_loader);
- class_loader_allocator =
- Runtime::Current()->GetClassLinker()->GetAllocatorForClassLoader(loader);
+
+ ClassLinker* class_linker = Runtime::Current()->GetClassLinker();
+ if (class_linker->IsBootClassLoader(soa, loader)) {
+ loader = nullptr;
+ class_loader = nullptr;
+ }
+
+ class_loader_allocator = class_linker->GetAllocatorForClassLoader(loader);
CHECK(class_loader_allocator != nullptr);
}
if (library != nullptr) {