From 4849835437f4dd80ff68a3f700e19dea843f3b8d Mon Sep 17 00:00:00 2001 From: Dave Mitchell Date: Wed, 8 May 2002 01:11:02 +0100 Subject: Re: [PATCH scope.c] Re: local($tied->{foo}) leaks Message-ID: <20020508001102.D4118@fdgroup.com> p4raw-id: //depot/perl@16456 --- pp_hot.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) (limited to 'pp_hot.c') diff --git a/pp_hot.c b/pp_hot.c index 98229a2303..de2dec4464 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -1699,17 +1699,8 @@ PP(pp_helem) STRLEN keylen; char *key = SvPV(keysv, keylen); SAVEDELETE(hv, savepvn(key,keylen), keylen); - } else { - SV *sv; + } else save_helem(hv, keysv, svp); - sv = *svp; - /* If we're localizing a tied hash element, this new - * sv won't actually be stored in the hash - so it - * won't get reaped when the localize ends. Ensure it - * gets reaped by mortifying it instead. DAPM */ - if (SvTIED_mg(sv, PERL_MAGIC_tiedelem)) - sv_2mortal(sv); - } } } else if (PL_op->op_private & OPpDEREF) @@ -2964,17 +2955,8 @@ PP(pp_aelem) PUSHs(lv); RETURN; } - if (PL_op->op_private & OPpLVAL_INTRO) { - SV *sv; + if (PL_op->op_private & OPpLVAL_INTRO) save_aelem(av, elem, svp); - sv = *svp; - /* If we're localizing a tied array element, this new sv - * won't actually be stored in the array - so it won't get - * reaped when the localize ends. Ensure it gets reaped by - * mortifying it instead. DAPM */ - if (SvTIED_mg(sv, PERL_MAGIC_tiedelem)) - sv_2mortal(sv); - } else if (PL_op->op_private & OPpDEREF) vivify_ref(*svp, PL_op->op_private & OPpDEREF); } -- cgit v1.2.1