summaryrefslogtreecommitdiff
path: root/embedvar.h
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2012-11-25 12:57:04 -0800
committerFather Chrysostomos <sprout@cpan.org>2012-11-27 07:05:02 -0800
commit1a904fc88069e249a4bd0ef196a3f1a7f549e0fe (patch)
treede28df537caeee6b88185d7beb1305d5b8b55dfb /embedvar.h
parent07d01d6ec25527bf0236de2205ea412d40353058 (diff)
downloadperl-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.h2
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)