This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
gh16947: avoid mutating regexp program only within GOSUB
authorHugo van der Sanden <hv@crypt.org>
Sat, 18 Apr 2020 13:43:02 +0000 (14:43 +0100)
committerHugo van der Sanden <hv@crypt.org>
Thu, 23 Apr 2020 10:10:09 +0000 (11:10 +0100)
commit089ad25d3f4e8c7f5ff9b3a80e2e1dfa50f1a634
treece8928b50a37217d0524e8baa9c82dc9f2c2b2a4
parent3b53f4ea6ed5cc4af123b84b376cd30e2722f303
gh16947: avoid mutating regexp program only within GOSUB

Commits 3bc2a7809d and bdb91f3f96 used the existence of a frame to
decide when it was unsafe to mutate the regexp program, due to having
recursed for as GOSUB. However the frame recursion mechanism is also
used for SUSPEND.

Refine it further to avoid mutation only when within a GOSUB by saving
a new boolean in the frame structure, and using that to derive a "mutate_ok"
flag.
regcomp.c
t/re/pat.t