From fbbcf307373747a98ad5deea3fa9f2fec37e80ec Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 1 Dec 2025 11:35:57 -0400 Subject: [PATCH] Fix IndexOutOfBounds crash in ComposeText.onMeasure --- .../securesms/components/ComposeText.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/ComposeText.java b/app/src/main/java/org/thoughtcrime/securesms/components/ComposeText.java index b9c33767de..128272bcb2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/ComposeText.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/ComposeText.java @@ -57,6 +57,7 @@ import static org.thoughtcrime.securesms.database.MentionUtil.MENTION_STARTER; public class ComposeText extends EmojiEditText { + private static final String TAG = Log.tag(ComposeText.class); private static final char EMOJI_STARTER = ':'; private static final int MAX_QUERY_LENGTH = 64; private static final Pattern TIME_PATTERN = Pattern.compile("^[0-9]{1,2}:[0-9]{1,2}$"); @@ -99,11 +100,21 @@ public class ComposeText extends EmojiEditText { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); + try { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } catch (IndexOutOfBoundsException e) { + Log.w(TAG, "IndexOutOfBoundsException during onMeasure, retrying", e); + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } if (getLayout() != null && !TextUtils.isEmpty(hint)) { setHintWithChecks(ellipsizeToWidth(hint)); - super.onMeasure(widthMeasureSpec, heightMeasureSpec); + try { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } catch (IndexOutOfBoundsException e) { + Log.w(TAG, "IndexOutOfBoundsException during hint onMeasure, retrying", e); + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } } }