This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regex engine: Issue #19168 - Fix variable length lookbehind matches
authorYves Orton <demerphq@gmail.com>
Sun, 20 Feb 2022 09:38:09 +0000 (10:38 +0100)
committerKarl Williamson <khw@cpan.org>
Wed, 23 Feb 2022 17:40:52 +0000 (10:40 -0700)
commit271c3af797311222713e1573330fe45bb5609e6a
treec3657135c131acece6870b65353ee8ee64ef0760
parent35b3c2dce3f9235087a5114ea0abb1d6200b534a
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.
pod/perldebguts.pod
regcomp.c
regcomp.sym
regexec.c
regexp.h
regnodes.h
t/re/re_tests