From: Nicholas Clark Date: Mon, 1 Dec 2008 22:17:55 +0000 (+0000) Subject: The temporary SV created in Perl_save_helem_flags() to store the key X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=fd1b367e716f9d49ad7b9ab14ec9ffbc9065e0bc;p=p5sagit%2Fp5-mst-13.2.git The temporary SV created in Perl_save_helem_flags() to store the key can be freed immediately after it is used, as it is unrelated to anything else. This folds SvREFCNT_dec()s on two code paths into one. p4raw-id: //depot/perl@34973 --- diff --git a/scope.c b/scope.c index 78d796b..1e06671 100644 --- a/scope.c +++ b/scope.c @@ -902,19 +902,18 @@ Perl_leave_scope(pTHX_ I32 base) sv = MUTABLE_SV(SSPOPPTR); hv = MUTABLE_HV(SSPOPPTR); ptr = hv_fetch_ent(hv, sv, 1, 0); + SvREFCNT_dec(sv); if (ptr) { const SV * const oval = HeVAL((HE*)ptr); if (oval && oval != &PL_sv_undef) { ptr = &HeVAL((HE*)ptr); if (SvTIED_mg((const SV *)hv, PERL_MAGIC_tied)) SvREFCNT_inc_void(*(SV**)ptr); - SvREFCNT_dec(sv); av = MUTABLE_AV(hv); /* what to refcnt_dec */ goto restore_sv; } } SvREFCNT_dec(hv); - SvREFCNT_dec(sv); SvREFCNT_dec(value); break; case SAVEt_OP: