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.