diff options
author | Father Chrysostomos <sprout@cpan.org> | 2012-09-22 07:12:04 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2012-09-22 17:10:43 -0700 |
commit | 9c744f4f4d7678009336db8141276918751b7c52 (patch) | |
tree | 75b79c1eeb5294e13a51da94de00ce1244d0750b /pp_hot.c | |
parent | 895cdc83ca4f8ad093074b3bd5d0fbc1d09f7628 (diff) | |
download | perl-9c744f4f4d7678009336db8141276918751b7c52.tar.gz |
Stop hash assignment from leaking on croak
Diffstat (limited to 'pp_hot.c')
-rw-r--r-- | pp_hot.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -1013,7 +1013,7 @@ PP(pp_aassign) HE *didstore; sv = *relem ? *relem : &PL_sv_no; relem++; - tmpstr = newSV(0); + tmpstr = sv_newmortal(); if (*relem) sv_setsv(tmpstr,*relem); /* value */ relem++; @@ -1030,11 +1030,10 @@ PP(pp_aassign) } } didstore = hv_store_ent(hash,sv,tmpstr,0); + if (didstore) SvREFCNT_inc_simple_void_NN(tmpstr); if (magic) { if (SvSMAGICAL(tmpstr)) mg_set(tmpstr); - if (!didstore) - sv_2mortal(tmpstr); } TAINT_NOT; } |