diff options
author | Father Chrysostomos <sprout@cpan.org> | 2012-11-25 12:57:04 -0800 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2012-11-27 07:05:02 -0800 |
commit | 1a904fc88069e249a4bd0ef196a3f1a7f549e0fe (patch) | |
tree | de28df537caeee6b88185d7beb1305d5b8b55dfb /embedvar.h | |
parent | 07d01d6ec25527bf0236de2205ea412d40353058 (diff) | |
download | perl-1a904fc88069e249a4bd0ef196a3f1a7f549e0fe.tar.gz |
Disable PL_sawampersand
PL_sawampersand actually causes bugs (e.g., perl #4289), because the
behaviour changes. eval '$&' after a match will produce different
results depending on whether $& was seen before the match.
Using copy-on-write for the pre-match copy (preceding patches do that)
alleviates the slowdown caused by mentioning $&. The copy doesn’t
happen unless the string is modified after the match. It’s now a
post- match copy. So we no longer need to do things differently
depending on whether $& has been seen.
PL_sawampersand is now #defined to be equal to what it would be if
every program began with $',$&,$`.
I left the PL_sawampersand code in place, in case this commit proves
immature. Running Configure with -Accflags=PERL_SAWAMPERSAND will
reënable the PL_sawampersand mechanism.
Diffstat (limited to 'embedvar.h')
-rw-r--r-- | embedvar.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/embedvar.h b/embedvar.h index 0c25f34092..beb3bd2187 100644 --- a/embedvar.h +++ b/embedvar.h @@ -287,7 +287,9 @@ #define PL_savestack (vTHX->Isavestack) #define PL_savestack_ix (vTHX->Isavestack_ix) #define PL_savestack_max (vTHX->Isavestack_max) +#ifndef PL_sawampersand #define PL_sawampersand (vTHX->Isawampersand) +#endif #define PL_scopestack (vTHX->Iscopestack) #define PL_scopestack_ix (vTHX->Iscopestack_ix) #define PL_scopestack_max (vTHX->Iscopestack_max) |