summaryrefslogtreecommitdiff
path: root/hv.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2010-10-21 18:18:42 -0700
committerFather Chrysostomos <sprout@cpan.org>2010-10-21 20:13:38 -0700
commitcefd5c7c8c45828fd7b3bcc2bfeaeb9773752a05 (patch)
tree479e903901ef7e64da14b7d5e72f5264cd216789 /hv.c
parent158cfab664aa2a959a6c55c0d53a15678d5ffb0b (diff)
downloadperl-cefd5c7c8c45828fd7b3bcc2bfeaeb9773752a05.tar.gz
[perl #78488] Bleadperl 304474c3 breaks GFUJI/Test-LeakTrace-0.13.tar.gz
This commit restores an SvREFCNT_dec that was inadvertently removed. c8bbf67 removed the SvREFCNT_dec(HeVAL(entry)), adding SvREFCNT_dec(old_val) instead. 304474c3 reverted that block, but failed to restore the SvREFCNT_dec(HeVAL(entry)). The result was that the %INC entry created by do "file" was leaking. (Y’know, giving out commit bits to just *anyone* who comes along with a few patches seems dangerous. Has anybody been looking at what I’m doing?)
Diffstat (limited to 'hv.c')
-rw-r--r--hv.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/hv.c b/hv.c
index 08867cf5d0..808a4bf9a3 100644
--- a/hv.c
+++ b/hv.c
@@ -692,6 +692,7 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
}
HeVAL(entry) = val;
} else if (action & HV_FETCH_ISSTORE) {
+ SvREFCNT_dec(HeVAL(entry));
HeVAL(entry) = val;
}
} else if (HeVAL(entry) == &PL_sv_placeholder) {