From a966690d88d4d6eca403bfca2bea9856418dfa8a Mon Sep 17 00:00:00 2001 From: YvesCheung <975135274@qq.com> Date: Thu, 22 Oct 2020 21:38:01 +0800 Subject: [PATCH] Fix index out of bounds --- .../ua/anatolii/graphics/ninepatch/NinePatchChunk.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Library/src/main/java/ua/anatolii/graphics/ninepatch/NinePatchChunk.java b/Library/src/main/java/ua/anatolii/graphics/ninepatch/NinePatchChunk.java index 33f277f..7c847c2 100644 --- a/Library/src/main/java/ua/anatolii/graphics/ninepatch/NinePatchChunk.java +++ b/Library/src/main/java/ua/anatolii/graphics/ninepatch/NinePatchChunk.java @@ -420,11 +420,15 @@ public static void setupColors(Bitmap bitmap, int bitmapWidth, int bitmapHeight, for (Div yDiv : yRegions) { for (Div xDiv : xRegions) { int startX = xDiv.start + 1; + int stopX = Math.min(xDiv.stop + 1, bitmapWidth - 1); int startY = yDiv.start + 1; - if (hasSameColor(bitmap, startX, xDiv.stop + 1, startY, yDiv.stop + 1)) { + int stopY = Math.min(yDiv.stop + 1, bitmapHeight - 1); + + if (hasSameColor(bitmap, startX, stopX, startY, stopY)) { int pixel = bitmap.getPixel(startX, startY); - if (isTransparent(pixel)) + if (isTransparent(pixel)) { pixel = TRANSPARENT_COLOR; + } out.colors[colorIndex] = pixel; } else { out.colors[colorIndex] = NO_COLOR;