Extreme Voodoo programming, by not pinching the SV if it is a
Artur Bergman [Thu, 17 Apr 2003 17:31:52 +0000 (17:31 +0000)]
PADTMP it happily keeps it's value later on!

p4raw-id: //depot/perl@19254

sv.c

diff --git a/sv.c b/sv.c
index 69cb3bc..6a4dcf1 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -9864,8 +9864,13 @@ Perl_rvpv_dup(pTHX_ SV *dstr, SV *sstr, CLONE_PARAMS* param)
            /* Special case - not normally malloced for some reason */
            if (SvREADONLY(sstr) && SvFAKE(sstr)) {
                /* A "shared" PV - clone it as unshared string */
-               SvFAKE_off(dstr);
-               SvREADONLY_off(dstr);
+                if(!SvPADTMP(sstr)) {
+                    /* However, some of them live in the pad
+                       and they should not have these flags
+                       turned off */
+                   SvFAKE_off(dstr);
+                   SvREADONLY_off(dstr);
+                }
                SvPVX(dstr) = SAVEPVN(SvPVX(sstr), SvCUR(sstr));
            }
            else {