Change 11330 by jhi@alpha on 2001/07/12 22:55:23

        Subject: [PATCH] Re: Memory corruption? Read-only $_?
        From: Abhijit Menon-Sen <[EMAIL PROTECTED]>
        Date: Fri, 13 Jul 2001 05:21:16 +0530
        Message-ID: <[EMAIL PROTECTED]>

Affected files ...

... //depot/perl/sv.c#440 edit

Differences ...

==== //depot/perl/sv.c#440 (text) ====
Index: perl/sv.c
--- perl/sv.c.~1~       Thu Jul 12 17:00:05 2001
+++ perl/sv.c   Thu Jul 12 17:00:05 2001
@@ -1569,8 +1569,18 @@
 #endif
            Renew(s,newlen,char);
        }
-        else
-           New(703,s,newlen,char);
+        else {
+           /* If we're growing a newSVpvn_share()d SV, we must unshare
+              the PVX by hand, since sv_force_normal_flags() will try
+              to grow the SV. AMS 20010713 */
+           if (SvREADONLY(sv) && SvFAKE(sv)) {
+               STRLEN len = SvCUR(sv);
+               SvFAKE_off(sv);
+               SvREADONLY_off(sv);
+               unsharepvn(SvPVX(sv), SvUTF8(sv) ? -(I32)len : len, SvUVX(sv));
+           }
+           New(703, s, newlen, char);
+       }
        SvPV_set(sv, s);
         SvLEN_set(sv, newlen);
     }
End of Patch.

Reply via email to