Skip to content

Commit b7b048e

Browse files
authored
Merge pull request #167 from bulasevich/GR-59497
[Backport][GR-59497] TRegex: fix OracleDB flavor incorrectly parsing escaped surrogate pairs.
2 parents a376e8e + e1b2be6 commit b7b048e

File tree

2 files changed

+2
-1
lines changed

2 files changed

+2
-1
lines changed

regex/src/com.oracle.truffle.regex.test/src/com/oracle/truffle/regex/tregex/test/OracleDBTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1387,6 +1387,7 @@ public void generatedTests() {
13871387
test("()(a*\\1+)*", "", "aaa", 0, true, 0, 3, 0, 0, 3, 3);
13881388
test("(a(\\2b|)?)+\\1c", "", "aaabaaac", 0, true, 0, 8, 5, 6, 6, 6);
13891389
test("((|ab)+?w\\Z|^c)de()d", "", "ffffff", 0, false);
1390+
test("\u0282\\\ud807\udfdd+\u1cf2", "", "\u0282\ud807\udfdd\ud807\udfdd\u1cf2", 0, true, 0, 13);
13901391
test("(a{1100,1100})\\1", "i", "a".repeat(2400), 0, true, 0, 2200, 0, 1100);
13911392

13921393
/* GENERATED CODE END - KEEP THIS MARKER FOR AUTOMATIC UPDATES */

regex/src/com.oracle.truffle.regex/src/com/oracle/truffle/regex/tregex/parser/flavors/OracleDBRegexLexer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,7 @@ protected int parseCustomEscapeChar(char c, boolean inCharClass) {
424424
} else {
425425
// outside character classes, all escaped characters are simply treated as literals,
426426
// there are no escape sequences in oracleDB
427-
return c;
427+
return Character.isHighSurrogate(c) ? finishSurrogatePair(c) : c;
428428
}
429429
}
430430

0 commit comments

Comments
 (0)