Hold a ClassLoader reference in NativeAllocationRegistry.

So that the native library isn't unloaded before we have a chance to
call the freeFunction.

Bug: 28406866
Change-Id: I889f1ccd91bba70e31fb8d09c0ec6d471fc35841
This commit is contained in:
Richard Uhler
2016-05-03 13:06:22 -07:00
parent a2c10caef2
commit 0ebdbb4a84
3 changed files with 3 additions and 3 deletions

View File

@@ -133,7 +133,7 @@ public final class Bitmap implements Parcelable {
nativeSize += getByteCount();
}
NativeAllocationRegistry registry = new NativeAllocationRegistry(
nativeGetNativeFinalizer(), nativeSize);
Bitmap.class.getClassLoader(), nativeGetNativeFinalizer(), nativeSize);
registry.registerNativeAllocation(this, nativeBitmap);
}

View File

@@ -94,7 +94,7 @@ public class Canvas {
// Use a Holder to allow static initialization of Canvas in the boot image.
private static class NoImagePreloadHolder {
public static final NativeAllocationRegistry sRegistry = new NativeAllocationRegistry(
getNativeFinalizer(), NATIVE_ALLOCATION_SIZE);
Canvas.class.getClassLoader(), getNativeFinalizer(), NATIVE_ALLOCATION_SIZE);
}
// This field is used to finalize the native Canvas properly

View File

@@ -47,7 +47,7 @@ public class Paint {
// Use a Holder to allow static initialization of Paint in the boot image.
private static class NoImagePreloadHolder {
public static final NativeAllocationRegistry sRegistry = new NativeAllocationRegistry(
nGetNativeFinalizer(), NATIVE_PAINT_SIZE);
Paint.class.getClassLoader(), nGetNativeFinalizer(), NATIVE_PAINT_SIZE);
}
/**