Skip to content

Commit 9de4d53

Browse files
author
Zoltan Herczeg
committed
Fix backreferences with unset backref and non-greedy iterators in JIT
1 parent 4e8fdb3 commit 9de4d53

File tree

3 files changed

+5
-1
lines changed

3 files changed

+5
-1
lines changed

ChangeLog

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,8 @@ in particular k and s.
189189

190190
51. Fix accept and endanchored interaction in JIT.
191191

192+
52. Fix backreferences with unset backref and non-greedy iterators in JIT.
193+
192194

193195
Version 10.42 11-December-2022
194196
------------------------------

src/pcre2_jit_compile.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9653,7 +9653,8 @@ else
96539653
{
96549654
if (ref)
96559655
{
9656-
add_jump(compiler, &backtrack->own_backtracks, CMP(SLJIT_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_SP), OVECTOR(1)));
9656+
if (!common->unset_backref)
9657+
add_jump(compiler, &backtrack->own_backtracks, CMP(SLJIT_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_SP), OVECTOR(1)));
96579658
zerolength = CMP(SLJIT_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_SP), OVECTOR(offset + 1));
96589659
}
96599660
else

src/pcre2_jit_test.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,7 @@ static struct regression_test_case regression_test_cases[] = {
596596
{ CMU | PCRE2_DUPNAMES, A, 0, 0, "(?:(?<A>AA)|(?<A>BB))\\k<A>{0,3}?M", "aaaaaabbbbbbaabbbbbbbbbbm" },
597597
{ CMU | PCRE2_DUPNAMES, A, 0, 0, "(?:(?<A>AA)|(?<A>BB))\\k<A>{2,3}?", "aaaabbbbaaaabbbbbbbbbb" },
598598
{ MU | PCRE2_MATCH_UNSET_BACKREF, A, 0, 0, "(a)|\\1+c", "xxc" },
599+
{ MU | PCRE2_MATCH_UNSET_BACKREF, A, 0, 0, "\\1+?()", "" },
599600

600601
/* Assertions. */
601602
{ MU, A, 0, 0, "(?=xx|yy|zz)\\w{4}", "abczzdefg" },

0 commit comments

Comments
 (0)