From 7e5c69c3cc0807a351dce6b97a6d7243309b50d0 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Fri, 11 Aug 2023 18:03:34 -0500 Subject: [PATCH] drawDrawable should at least not crash when it has no idea how big --- .../eu/siacs/conversations/persistance/FileBackend.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java index cee0739834c09025dcd5a09db42949818efcb509..ee540aac307f08ed6b42f8bdc5aa63af9f280516 100644 --- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java @@ -1311,7 +1311,13 @@ public class FileBackend { if (bitmap != null) return bitmap; } - bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); + Rect bounds = drawable.getBounds(); + int width = drawable.getIntrinsicWidth(); + if (width < 1) width = bounds == null || bounds.right < 1 ? 256 : bounds.right; + int height = drawable.getIntrinsicHeight(); + if (height < 1) height = bounds == null || bounds.bottom < 1 ? 256 : bounds.bottom; + + bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); drawable.draw(canvas);