Skip to content

Commit 936fef2

Browse files
author
Zoltan Herczeg
committed
Fix backref iterators when PCRE2_MATCH_UNSET_BACKREF is set in JIT
1 parent 57ee073 commit 936fef2

File tree

3 files changed

+6
-1
lines changed

3 files changed

+6
-1
lines changed

ChangeLog

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ undefined behaviour.
168168

169169
45. Fix \X matching in 32 bit mode without UTF in JIT.
170170

171+
46. Fix backref iterators when PCRE2_MATCH_UNSET_BACKREF is set in JIT.
172+
171173

172174
Version 10.42 11-December-2022
173175
------------------------------

src/pcre2_jit_compile.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9539,9 +9539,11 @@ if (!minimize)
95399539
if (ref)
95409540
OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(SLJIT_SP), OVECTOR(offset));
95419541
OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), SLJIT_IMM, 0);
9542+
95429543
if (ref)
95439544
{
9544-
add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_SP), OVECTOR(1)));
9545+
if (!common->unset_backref)
9546+
add_jump(compiler, &backtrack->topbacktracks, CMP(SLJIT_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_SP), OVECTOR(1)));
95459547
zerolength = CMP(SLJIT_EQUAL, TMP1, 0, SLJIT_MEM1(SLJIT_SP), OVECTOR(offset + 1));
95469548
}
95479549
else

src/pcre2_jit_test.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,7 @@ static struct regression_test_case regression_test_cases[] = {
595595
{ CMU | PCRE2_DUPNAMES, A, 0, 0, "(?:(?<A>AA)|(?<A>BB))\\k<A>{1,3}M", "aaaaaaaabbbbaabbbbm" },
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" },
598+
{ MU | PCRE2_MATCH_UNSET_BACKREF, A, 0, 0, "(a)|\\1+c", "xxc" },
598599

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

0 commit comments

Comments
 (0)