From b4e3347a1eb66eb62899944f9c586df7dfb9fed7 Mon Sep 17 00:00:00 2001 From: Unpublished Date: Sat, 22 Jul 2023 12:01:37 +0200 Subject: [PATCH] Fix spanText IOOBException Signed-off-by: Unpublished --- .../ui/theme/utils/AndroidViewThemeUtils.kt | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/ui/src/main/java/com/nextcloud/android/common/ui/theme/utils/AndroidViewThemeUtils.kt b/ui/src/main/java/com/nextcloud/android/common/ui/theme/utils/AndroidViewThemeUtils.kt index 1e6400b9..9b7d94a6 100644 --- a/ui/src/main/java/com/nextcloud/android/common/ui/theme/utils/AndroidViewThemeUtils.kt +++ b/ui/src/main/java/com/nextcloud/android/common/ui/theme/utils/AndroidViewThemeUtils.kt @@ -573,19 +573,18 @@ class AndroidViewThemeUtils @Inject constructor(schemes: MaterialSchemes, privat start: Int, spanText: Spannable ) { - var index = start - val matcher = Pattern .compile(constraint, Pattern.CASE_INSENSITIVE or Pattern.LITERAL) .matcher(originalText) - while (matcher.find()) { - val end = matcher.end() - spanText.setSpan(ForegroundColorSpan(color), index, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) - spanText.setSpan(StyleSpan(Typeface.BOLD), index, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) - index = - originalText.lowercase().indexOf(constraint, end + 1) // +1 skips the consecutive span - } + matcher.find(start) + + do { + val mStart = matcher.start() + val mEnd = matcher.end() + spanText.setSpan(ForegroundColorSpan(color), mStart, mEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + spanText.setSpan(StyleSpan(Typeface.BOLD), mStart, mEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + } while (matcher.find()) } // here for backwards compatibility