Skip to content

Commit a141712

Browse files
author
Zoltan Herczeg
authored
Restore buffer after an ACCEPT inside an scan substring block
1 parent 882b424 commit a141712

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

src/pcre2_match.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5824,6 +5824,9 @@ fprintf(stderr, "++ %2ld op=%3d %s\n", Fecode - mb->start_code, *Fecode,
58245824
assert_accept_frame->offset_top * sizeof(PCRE2_SIZE));
58255825
Foffset_top = assert_accept_frame->offset_top;
58265826
Fmark = assert_accept_frame->mark;
5827+
mb->end_subject = Lsaved_end_subject;
5828+
mb->true_end_subject = mb->end_subject + Ltrue_end_extra;
5829+
mb->moptions = Lsaved_moptions;
58275830
break;
58285831
}
58295832

testdata/testinput2

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6672,6 +6672,12 @@ a)"xI
66726672
abxyz
66736673
efgxyz
66746674

6675+
/(a)(*scs:(1)a(*ACCEPT))bbb/
6676+
abbb
6677+
6678+
/(a)(b+)(*scs:(1)a(*ACCEPT))(\2)/
6679+
abbb
6680+
66756681
# Tests for pcre2_set_optimize()
66766682

66776683
/abc/I,optimization_none

testdata/testoutput2

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19664,6 +19664,18 @@ No match
1966419664
2:
1966519665
3:
1966619666

19667+
/(a)(*scs:(1)a(*ACCEPT))bbb/
19668+
abbb
19669+
0: abbb
19670+
1: a
19671+
19672+
/(a)(b+)(*scs:(1)a(*ACCEPT))(\2)/
19673+
abbb
19674+
0: abb
19675+
1: a
19676+
2: b
19677+
3: b
19678+
1966719679
# Tests for pcre2_set_optimize()
1966819680

1966919681
/abc/I,optimization_none

0 commit comments

Comments
 (0)