Change 33378 by [EMAIL PROTECTED] on 2008/02/26 19:55:33
In Perl_sv_usepvn_flags(), with MYMALLOC, use the actual malloc()ed
size for SvLEN(), rather than an estimate.
Affected files ...
... //depot/perl/sv.c#1511 edit
Differences ...
==== //depot/perl/sv.c#1511 (text) ====
Index: perl/sv.c
--- perl/sv.c#1510~33377~ 2008-02-26 11:17:38.000000000 -0800
+++ perl/sv.c 2008-02-26 11:55:33.000000000 -0800
@@ -4175,7 +4175,12 @@
#endif
allocate = (flags & SV_HAS_TRAILING_NUL)
- ? len + 1: PERL_STRLEN_ROUNDUP(len + 1);
+ ? len + 1 :
+#ifdef MYMALLOC
+ len + 1;
+#else
+ PERL_STRLEN_ROUNDUP(len + 1);
+#endif
if (flags & SV_HAS_TRAILING_NUL) {
/* It's long enough - do nothing.
Specfically Perl_newCONSTSUB is relying on this. */
@@ -4191,9 +4196,13 @@
ptr = (char*) saferealloc (ptr, allocate);
#endif
}
- SvPV_set(sv, ptr);
- SvCUR_set(sv, len);
+#ifdef MYMALLOC
+ SvLEN_set(sv, malloced_size(ptr));
+#else
SvLEN_set(sv, allocate);
+#endif
+ SvCUR_set(sv, len);
+ SvPV_set(sv, ptr);
if (!(flags & SV_HAS_TRAILING_NUL)) {
ptr[len] = '\0';
}
End of Patch.