From 9c744f4f4d7678009336db8141276918751b7c52 Mon Sep 17 00:00:00 2001 From: Father Chrysostomos Date: Sat, 22 Sep 2012 07:12:04 -0700 Subject: Stop hash assignment from leaking on croak --- pp_hot.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'pp_hot.c') diff --git a/pp_hot.c b/pp_hot.c index 827395f87c..6057614f45 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -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; } -- cgit v1.2.1