From 01af516a8768cf3c544afb02283c9d8f1dba786c Mon Sep 17 00:00:00 2001 From: Chris Craik Date: Tue, 5 Aug 2014 17:59:08 -0700 Subject: [PATCH] Fix nine patch crash bug:15598400 Prevent destroying a NULL chunk Change-Id: Iea0ac5311ca8061f60c02669cd9b87eededf1b1d --- graphics/java/android/graphics/NinePatch.java | 5 ++++- .../java/android/graphics/drawable/NinePatchDrawable.java | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/graphics/java/android/graphics/NinePatch.java b/graphics/java/android/graphics/NinePatch.java index 3bccf08e8e92f..6f42046e357d3 100644 --- a/graphics/java/android/graphics/NinePatch.java +++ b/graphics/java/android/graphics/NinePatch.java @@ -118,7 +118,10 @@ public class NinePatch { @Override protected void finalize() throws Throwable { try { - nativeFinalize(mNativeChunk); + if (mNativeChunk != 0) { + // only attempt to destroy correctly initilized chunks + nativeFinalize(mNativeChunk); + } } finally { super.finalize(); } diff --git a/graphics/java/android/graphics/drawable/NinePatchDrawable.java b/graphics/java/android/graphics/drawable/NinePatchDrawable.java index 3397e94fb5f1e..758d42a691b31 100644 --- a/graphics/java/android/graphics/drawable/NinePatchDrawable.java +++ b/graphics/java/android/graphics/drawable/NinePatchDrawable.java @@ -613,10 +613,10 @@ public class NinePatchDrawable extends Drawable { this(ninePatch, padding, opticalInsets, DEFAULT_DITHER, false); } - NinePatchState(NinePatch ninePatch, Rect rect, Rect opticalInsets, boolean dither, + NinePatchState(NinePatch ninePatch, Rect padding, Rect opticalInsets, boolean dither, boolean autoMirror) { mNinePatch = ninePatch; - mPadding = rect; + mPadding = padding; mOpticalInsets = Insets.of(opticalInsets); mDither = dither; mAutoMirrored = autoMirror;