summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2006-04-16 10:37:46 +0000
committerNicholas Clark <nick@ccl4.org>2006-04-16 10:37:46 +0000
commit69d25b4f32e8b88ba21011f0df2af3779b14626d (patch)
tree534b4c65b20ed84e2d8077bab578fb4f95d5d36e /sv.c
parent3cdcf0578906870f84793c93ca5df75fb0f4b925 (diff)
downloadperl-69d25b4f32e8b88ba21011f0df2af3779b14626d.tar.gz
In Perl_sv_usepvn(), force a move under DEBUGGING to shake out caller
bugs. p4raw-id: //depot/perl@27839
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sv.c b/sv.c
index 8171c7fa51..3c8fa7726c 100644
--- a/sv.c
+++ b/sv.c
@@ -3915,7 +3915,18 @@ Perl_sv_usepvn(pTHX_ register SV *sv, register char *ptr, register STRLEN len)
SvPV_free(sv);
allocate = PERL_STRLEN_ROUNDUP(len + 1);
+#ifdef DEBUGGING
+ {
+ /* Force a move to shake out bugs in callers. */
+ char *new_ptr = safemalloc(allocate);
+ Copy(ptr, new_ptr, len, char);
+ PoisonFree(ptr,len,char);
+ Safefree(ptr);
+ ptr = new_ptr;
+ }
+#else
ptr = saferealloc (ptr, allocate);
+#endif
SvPV_set(sv, ptr);
SvCUR_set(sv, len);
SvLEN_set(sv, allocate);