--- a/src/java.base/share/classes/java/util/regex/Pattern.java Thu Sep 12 09:59:19 2019 -0700
+++ b/src/java.base/share/classes/java/util/regex/Pattern.java Thu Sep 12 11:07:35 2019 -0700
@@ -3931,12 +3931,14 @@
boolean match(Matcher matcher, int i, CharSequence seq) {
if (i < matcher.to) {
int ch = Character.codePointAt(seq, i);
- return predicate.is(ch) &&
- next.match(matcher, i + Character.charCount(ch), seq);
- } else {
- matcher.hitEnd = true;
- return false;
+ i += Character.charCount(ch);
+ if (i <= matcher.to) {
+ return predicate.is(ch) &&
+ next.match(matcher, i, seq);
+ }
}
+ matcher.hitEnd = true;
+ return false;
}
boolean study(TreeInfo info) {
info.minLength++;