m// and s///; don't copy TEMP/AMAGIC strings
authorDavid Mitchell <davem@iabyn.com>
Sat, 1 Sep 2012 10:43:53 +0000 (11:43 +0100)
committerDavid Mitchell <davem@iabyn.com>
Sat, 8 Sep 2012 14:42:07 +0000 (15:42 +0100)
commit6f1854a1fe246f8633ccd4d455563cb4210ceb39
treed8aac760ab18c3411076410bf176d0cf59b7a817
parentfbfb1899dd79253696b441cc1c4968a1057c2574
m// and s///; don't copy TEMP/AMAGIC strings

Currently pp_match and pp_subst make a copy of the match string if it's
SvTEMP(), and in the case of pp_match, also if it's SvAMAGIC().

This is no longer necessary, as the code will always copy the string
anyway if its actually needed after the match, i.e. if it detects the
presence of $1, $& or //p etc. Until a few commits ago, this wasn't the
case for pp_match: it would sometimes skip copying even in the presence of
$1 et al for efficiency reasons. Now that that's fixed, we can remove the
SvTEMP() and SvAMAGIC() tests.

As to why pp_subst did the SvTEMP test, I don't know: but removing it
didn't make any tests fail!
pp_hot.c