diff options
author | Yves Orton <demerphq@gmail.com> | 2022-02-20 10:38:09 +0100 |
---|---|---|
committer | Karl Williamson <khw@cpan.org> | 2022-02-23 10:40:52 -0700 |
commit | 271c3af797311222713e1573330fe45bb5609e6a (patch) | |
tree | c3657135c131acece6870b65353ee8ee64ef0760 /regexp.h | |
parent | 35b3c2dce3f9235087a5114ea0abb1d6200b534a (diff) | |
download | perl-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.h | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -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 { |