From: Dave Mitchell Date: Fri, 3 May 2002 21:12:10 +0000 (+0100) Subject: Re: local($tied->{foo}) leaks X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=6517de32d2d655b4824454d9b84e3bcde2d08f3c;p=p5sagit%2Fp5-mst-13.2.git Re: local($tied->{foo}) leaks Message-ID: <20020503211210.B22026@fdgroup.com> p4raw-id: //depot/perl@16383 --- diff --git a/scope.c b/scope.c index 85a0680..a7d55b0 100644 --- a/scope.c +++ b/scope.c @@ -206,6 +206,12 @@ S_save_scalar_at(pTHX_ SV **sptr) PL_localizing = 1; SvSETMAGIC(sv); PL_localizing = 0; + /* If we're localizing a tied array/hash element, this new sv + * won't actually be stored in the array/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); } return sv; }