From 2d48e53b3893b608969d597cd35436be770588fc Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Fri, 17 Jun 2016 12:46:14 -0700 Subject: 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 --- runtime/java_vm_ext.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'runtime/java_vm_ext.cc') 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(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) { -- cgit v1.2.3-59-g8ed1b