From e2adc7b98d460cc41682131a4070c8af65cc0e2a Mon Sep 17 00:00:00 2001 From: Hamza417 Date: Wed, 3 Jul 2024 22:29:31 +0530 Subject: [PATCH] Fix crash by using special characters using find --- .idea/dictionaries/hamza.xml | 1 + app/src/main/assets/html/changelogs.html | 1 + .../app/simple/inure/text/EditTextHelper.kt | 31 +++++++++++++------ 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/.idea/dictionaries/hamza.xml b/.idea/dictionaries/hamza.xml index 732d2eb33..6c5407642 100644 --- a/.idea/dictionaries/hamza.xml +++ b/.idea/dictionaries/hamza.xml @@ -61,6 +61,7 @@ busybox candara canonicalizing + casued cddl ceroa changelo diff --git a/app/src/main/assets/html/changelogs.html b/app/src/main/assets/html/changelogs.html index 800cef79a..bf778aea9 100644 --- a/app/src/main/assets/html/changelogs.html +++ b/app/src/main/assets/html/changelogs.html @@ -24,6 +24,7 @@

Bug Fixes

  • Fixed crashing on resizing app screen on Android desktop environments.
  • Fixed crashing on reading faulty apps info for Info Strip.
  • Fixed crashes caused by mismatching panel IDs.
  • +
  • Fixed crash casued by using special characters when using find in XML files.
  • Fixed some minor issues.
  • diff --git a/app/src/main/java/app/simple/inure/text/EditTextHelper.kt b/app/src/main/java/app/simple/inure/text/EditTextHelper.kt index 5760f8b51..311757a20 100644 --- a/app/src/main/java/app/simple/inure/text/EditTextHelper.kt +++ b/app/src/main/java/app/simple/inure/text/EditTextHelper.kt @@ -6,12 +6,23 @@ import android.os.Build import android.text.Layout import android.text.Spannable import android.text.SpannableStringBuilder -import android.text.style.* +import android.text.style.AbsoluteSizeSpan +import android.text.style.AlignmentSpan +import android.text.style.BackgroundColorSpan +import android.text.style.BulletSpan +import android.text.style.MaskFilterSpan +import android.text.style.QuoteSpan +import android.text.style.RelativeSizeSpan +import android.text.style.StrikethroughSpan +import android.text.style.StyleSpan +import android.text.style.SubscriptSpan +import android.text.style.SuperscriptSpan +import android.text.style.UnderlineSpan import android.widget.EditText -import androidx.core.text.toSpannable import app.simple.inure.preferences.AppearancePreferences import app.simple.inure.util.ConditionUtils.invert -import java.util.* +import java.util.Locale +import java.util.Objects import kotlin.math.roundToInt object EditTextHelper { @@ -562,16 +573,16 @@ object EditTextHelper { } fun EditText.findMatches(searchKeyword: String): ArrayList> { - val pattern = searchKeyword.lowercase().toRegex() - val matcher = pattern.toPattern().matcher(text.toString().lowercase(Locale.getDefault()).toSpannable()) + val lowerCaseText = text.toString().lowercase(Locale.getDefault()) + val lowerCaseKeyword = searchKeyword.lowercase() val list = ArrayList>() - if (searchKeyword.isNotEmpty()) { - while (matcher.find()) { - list.add(Pair(matcher.start(), matcher.end())) - } + var index = lowerCaseText.indexOf(lowerCaseKeyword) + while (index >= 0) { + list.add(Pair(index, index + lowerCaseKeyword.length)) + index = lowerCaseText.indexOf(lowerCaseKeyword, index + 1) } return list } -} \ No newline at end of file +}