From: Nicholas Clark <nick@ccl4.org>
Date: Tue, 19 May 2009 08:15:46 +0000 (+0100)
Subject: In perl_clone_using(), use sv_dup_inc_multiple() to clone the temps stack.
X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=e92c6be8349ad1d36d6df1dcb526fd37421e9970;p=p5sagit%2Fp5-mst-13.2.git

In perl_clone_using(), use sv_dup_inc_multiple() to clone the temps stack.
Avoid using Newxz() to zero allocate memory we will immediately overwrite.
---

diff --git a/sv.c b/sv.c
index c7468ec..6e7fbd4 100644
--- a/sv.c
+++ b/sv.c
@@ -12205,12 +12205,9 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
 	PL_tmps_ix		= proto_perl->Itmps_ix;
 	PL_tmps_max		= proto_perl->Itmps_max;
 	PL_tmps_floor		= proto_perl->Itmps_floor;
-	Newxz(PL_tmps_stack, PL_tmps_max, SV*);
-	i = 0;
-	while (i <= PL_tmps_ix) {
-	    PL_tmps_stack[i]	= sv_dup_inc(proto_perl->Itmps_stack[i], param);
-	    ++i;
-	}
+	Newx(PL_tmps_stack, PL_tmps_max, SV*);
+	sv_dup_inc_multiple(proto_perl->Itmps_stack, PL_tmps_stack, PL_tmps_ix,
+			    param);
 
 	/* next PUSHMARK() sets *(PL_markstack_ptr+1) */
 	i = proto_perl->Imarkstack_max - proto_perl->Imarkstack;