From: Nicholas Clark 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;