diff --git a/kotlin-native/backend.native/tests/harmony_regex/PatternTest.kt b/kotlin-native/backend.native/tests/harmony_regex/PatternTest.kt index 121a43875d5..ef8cccb42fa 100644 --- a/kotlin-native/backend.native/tests/harmony_regex/PatternTest.kt +++ b/kotlin-native/backend.native/tests/harmony_regex/PatternTest.kt @@ -1253,4 +1253,11 @@ class PatternTest { regex = Regex(patString, RegexOption.DOT_MATCHES_ALL) assertFalse(regex.containsMatchIn(testString)) } + + @Test fun testFailedFindDotQuantifier() { + val regex = Regex("For.+ \\(1\\)") + val result = regex.find("This is good (1), For You") + + assertNull(result) + } } diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/text/regex/sets/AbstractSet.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/text/regex/sets/AbstractSet.kt index c48a27f326b..87cb05545df 100644 --- a/kotlin-native/runtime/src/main/kotlin/kotlin/text/regex/sets/AbstractSet.kt +++ b/kotlin-native/runtime/src/main/kotlin/kotlin/text/regex/sets/AbstractSet.kt @@ -97,8 +97,8 @@ internal abstract class AbstractSet(val type: Int = 0) { ?: -1 /** - * @param leftLimit - an index, to finish search back (left limit, inclusive). - * @param rightLimit - an index to start search from (right limit, exclusive). + * @param leftLimit - an index, to finish search back (left limit). + * @param rightLimit - an index to start search from (right limit). * @param testString - test string. * @param matchResult - match result. * @return an index to start back search next time if this search fails(new left bound); diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/text/regex/sets/SequenceSet.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/text/regex/sets/SequenceSet.kt index d3613805fb0..2330015d012 100644 --- a/kotlin-native/runtime/src/main/kotlin/kotlin/text/regex/sets/SequenceSet.kt +++ b/kotlin-native/runtime/src/main/kotlin/kotlin/text/regex/sets/SequenceSet.kt @@ -75,7 +75,7 @@ open internal class SequenceSet(substring: CharSequence, val ignoreCase: Boolean var index = rightLimit while (index >= leftLimit) { index = testString.lastIndexOf(patternString, index, ignoreCase) - if (index < 0) { + if (index < 0 || index < leftLimit) { return -1 } // Check if we have a supplementary code point at the beginning or at the end of the string.