From 0c5b26f145c78f4b966a488a95a1e916f8bf278e Mon Sep 17 00:00:00 2001 From: Zoltan Herczeg Date: Wed, 13 Aug 2025 07:17:30 +0000 Subject: [PATCH] Restore buffer after an ACCEPT inside an scan substring block --- src/pcre2_match.c | 3 +++ testdata/testinput2 | 3 +++ testdata/testoutput2 | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/src/pcre2_match.c b/src/pcre2_match.c index c550b24d8..9bd070d88 100644 --- a/src/pcre2_match.c +++ b/src/pcre2_match.c @@ -5895,6 +5895,9 @@ fprintf(stderr, "++ %2ld op=%3d %s\n", Fecode - mb->start_code, *Fecode, assert_accept_frame->offset_top * sizeof(PCRE2_SIZE)); Foffset_top = assert_accept_frame->offset_top; Fmark = assert_accept_frame->mark; + mb->end_subject = Lsaved_end_subject; + mb->true_end_subject = mb->end_subject + Ltrue_end_extra; + mb->moptions = Lsaved_moptions; break; } diff --git a/testdata/testinput2 b/testdata/testinput2 index 0cac6a7e4..5537a19e4 100644 --- a/testdata/testinput2 +++ b/testdata/testinput2 @@ -6753,6 +6753,9 @@ a)"xI abxyz efgxyz +/(a)(*scs:(1)a(*ACCEPT))bbb/ + abbb + # Duplicated capture references /(a)(b)(c)(d)(*scs:(4,3,1,2,2,1,3,3,4,4)x)/B diff --git a/testdata/testoutput2 b/testdata/testoutput2 index dd19a8808..89b3d413c 100644 --- a/testdata/testoutput2 +++ b/testdata/testoutput2 @@ -20258,6 +20258,11 @@ No match 2: 3: +/(a)(*scs:(1)a(*ACCEPT))bbb/ + abbb + 0: abbb + 1: a + # Duplicated capture references /(a)(b)(c)(d)(*scs:(4,3,1,2,2,1,3,3,4,4)x)/B