summaryrefslogtreecommitdiff
path: root/regexp.h
diff options
context:
space:
mode:
authorYves Orton <demerphq@gmail.com>2022-02-20 10:38:09 +0100
committerKarl Williamson <khw@cpan.org>2022-02-23 10:40:52 -0700
commit271c3af797311222713e1573330fe45bb5609e6a (patch)
treec3657135c131acece6870b65353ee8ee64ef0760 /regexp.h
parent35b3c2dce3f9235087a5114ea0abb1d6200b534a (diff)
downloadperl-271c3af797311222713e1573330fe45bb5609e6a.tar.gz
regex engine: Issue #19168 - Fix variable length lookbehind matches
We were not validating that when (?<=a|ab) matched that the right hand side of the match lined up with the position of the assertion. Similar for (?<!a|ab) and related patterns, eg, (*positive_lookbehind:). Note these problems do NOT affect lookahead. Part of the difficulty here was that the SUCCEED node was serving too many purposes, necessitating a new regop LOOKBEHIND_END. Includes more tests for various lookahead or lookbehind cases.
Diffstat (limited to 'regexp.h')
-rw-r--r--regexp.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/regexp.h b/regexp.h
index e404206133..7bd7162d33 100644
--- a/regexp.h
+++ b/regexp.h
@@ -842,6 +842,7 @@ typedef struct regmatch_state {
char *start;
char *end;
regnode *me; /* the IFMATCH/SUSPEND/UNLESSM node */
+ char *prev_match_end;
} ifmatch; /* and SUSPEND/UNLESSM */
struct {