From 3fc009be8a49f9edb8059d8612ef6ed7f048f242 Mon Sep 17 00:00:00 2001 From: Ian Graves Date: Tue, 8 Mar 2022 16:32:18 +0000 Subject: [PATCH] 8281560: Matcher.hitEnd returns unexpected results in presence of CANON_EQ flag. Reviewed-by: rriggs, lancea --- .../classes/java/util/regex/Pattern.java | 3 ++- test/jdk/java/util/regex/RegExTest.java | 26 ++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/java.base/share/classes/java/util/regex/Pattern.java b/src/java.base/share/classes/java/util/regex/Pattern.java index f5d4c965b25..5bb6ec76a7c 100644 --- a/src/java.base/share/classes/java/util/regex/Pattern.java +++ b/src/java.base/share/classes/java/util/regex/Pattern.java @@ -4005,8 +4005,9 @@ loop: for(int x=0, offset=0; x results1 = new ArrayList<>(); + ArrayList results2 = new ArrayList<>(); + + while (matcher1.find()) { + results1.add(matcher1.hitEnd()); + } + + while (matcher2.find()) { + results2.add(matcher2.hitEnd()); + } + + assertEquals(results1, results2); + } + //This test is for 8281315 @Test public static void iOOBForCIBackrefs(){ String line = "\ud83d\udc95\ud83d\udc95\ud83d\udc95"; var pattern2 = Pattern.compile("(?i)(.)\\1{2,}"); assertTrue(pattern2.matcher(line).find()); - } } +