From 08beea71c9c68a65e078e476f4747b66cf20128f Mon Sep 17 00:00:00 2001 From: sergeyv Date: Thu, 14 Sep 2017 11:41:54 -0700 Subject: [PATCH] Throw if BitmapFactory.Options.inBitmap is HARDWARE Test: BitmapRegionDecoderTest#testHardwareBitmapIn bug:34415265 Change-Id: I58061504dd42ba918f89e1e5daf668f7601ca8d3 --- graphics/java/android/graphics/BitmapFactory.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/graphics/java/android/graphics/BitmapFactory.java b/graphics/java/android/graphics/BitmapFactory.java index 3b272c8ddec70..ffb39e3391195 100644 --- a/graphics/java/android/graphics/BitmapFactory.java +++ b/graphics/java/android/graphics/BitmapFactory.java @@ -433,10 +433,15 @@ public class BitmapFactory { static void validate(Options opts) { if (opts == null) return; - if (opts.inMutable && opts.inPreferredConfig == Bitmap.Config.HARDWARE) { + if (opts.inBitmap != null && opts.inBitmap.getConfig() == Bitmap.Config.HARDWARE) { throw new IllegalArgumentException("Bitmaps with Config.HARWARE are always immutable"); } + if (opts.inMutable && opts.inPreferredConfig == Bitmap.Config.HARDWARE) { + throw new IllegalArgumentException("Bitmaps with Config.HARDWARE cannot be " + + "decoded into - they are immutable"); + } + if (opts.inPreferredColorSpace != null) { if (!(opts.inPreferredColorSpace instanceof ColorSpace.Rgb)) { throw new IllegalArgumentException("The destination color space must use the " +