From 0a5c8c15ebc0cfbca8fca6cea684e17c66d73284 Mon Sep 17 00:00:00 2001 From: "Cuiping.x.Shu" Date: Wed, 22 Nov 2017 13:30:31 +0800 Subject: Check recycled when createBitmap This is to avoid framework crash when application used the recycled bitmap memory in createBitmap. Bug:123656975 Change-Id: I98f93ce48c7bc91913d0b31bca1dc0a10eb319d7 --- graphics/java/android/graphics/Bitmap.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'graphics/java') diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java index d6131cf2e5d4..507f767ae3e6 100644 --- a/graphics/java/android/graphics/Bitmap.java +++ b/graphics/java/android/graphics/Bitmap.java @@ -814,7 +814,7 @@ public final class Bitmap implements Parcelable { * @return A bitmap that represents the specified subset of source * @throws IllegalArgumentException if the x, y, width, height values are * outside of the dimensions of the source bitmap, or width is <= 0, - * or height is <= 0 + * or height is <= 0, or if the source bitmap has already been recycled */ public static Bitmap createBitmap(@NonNull Bitmap source, int x, int y, int width, int height, @Nullable Matrix m, boolean filter) { @@ -827,6 +827,9 @@ public final class Bitmap implements Parcelable { if (y + height > source.getHeight()) { throw new IllegalArgumentException("y + height must be <= bitmap.height()"); } + if (source.isRecycled()) { + throw new IllegalArgumentException("cannot use a recycled source in createBitmap"); + } // check if we can just return our argument unchanged if (!source.isMutable() && x == 0 && y == 0 && width == source.getWidth() && -- cgit v1.2.3-59-g8ed1b