This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
free PL_regex_padav later
authorDavid Mitchell <davem@iabyn.com>
Thu, 29 Mar 2012 10:20:32 +0000 (11:20 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 13 Jun 2012 12:32:49 +0000 (13:32 +0100)
commit0547a7295c4c0072f6e77ff07650c554c64fbbd8
tree14f772bab59b33aacc125963ad13e000b0279bc5
parente4a2df84a6027f19dfb84f5057abfc4ff54618b6
free PL_regex_padav later

At the point where formerly it was freed, instead just free the individual
regexes and put &PL_sv_undef placeholders in the vacated PL_regex_padav
slots. Then free the actual array a lot later.

This is because at the point where PL_regex_padav used to be freed,
regexes can still hold pointers to CVs that have PMOPs that index into
PL_regex_padav; and while the array is being freed, it's state is
inconsistent (jn particular, sv_clear temporarily stores old indexes in
the top slot.)

This is a band-aid really; the proper solution is to get rid of
PL_regex_padav altogether and store the regexps in the pad.
perl.c