summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hv.c7
-rw-r--r--perl.c2
2 files changed, 6 insertions, 3 deletions
diff --git a/hv.c b/hv.c
index e7d2075378..f35c1805e5 100644
--- a/hv.c
+++ b/hv.c
@@ -836,11 +836,14 @@ newHV(void)
void
hv_free_ent(HV *hv, register HE *entry)
{
+ SV *val;
+
if (!entry)
return;
- if (isGV(HeVAL(entry)) && GvCVu(HeVAL(entry)) && HvNAME(hv))
+ val = HeVAL(entry);
+ if (isGV(val) && GvCVu(val) && HvNAME(hv))
sub_generation++; /* may be deletion of method from stash */
- SvREFCNT_dec(HeVAL(entry));
+ SvREFCNT_dec(val);
if (HeKLEN(entry) == HEf_SVKEY) {
SvREFCNT_dec(HeKEY_sv(entry));
Safefree(HeKEY_hek(entry));
diff --git a/perl.c b/perl.c
index 6ded533af7..f84e2416a8 100644
--- a/perl.c
+++ b/perl.c
@@ -493,7 +493,7 @@ perl_destruct(register PerlInterpreter *sv_interp)
if (hent) {
warn("Unbalanced string table refcount: (%d) for \"%s\"",
HeVAL(hent) - Nullsv, HeKEY(hent));
- HeVAL(hent) = &sv_undef;
+ HeVAL(hent) = Nullsv;
hent = HeNEXT(hent);
}
if (!hent) {