summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hv.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/hv.c b/hv.c
index 79d1944b9c..3322848b19 100644
--- a/hv.c
+++ b/hv.c
@@ -1443,8 +1443,10 @@ Perl_hv_copy_hints_hv(pTHX_ HV *const ohv)
hv_iterinit(ohv);
while ((entry = hv_iternext_flags(ohv, 0))) {
SV *const sv = newSVsv(HeVAL(entry));
+ SV *heksv = newSVhek(HeKEY_hek(entry));
sv_magic(sv, NULL, PERL_MAGIC_hintselem,
- (char *)sv_2mortal(newSVhek (HeKEY_hek(entry))), HEf_SVKEY);
+ (char *)heksv, HEf_SVKEY);
+ SvREFCNT_dec(heksv);
(void)hv_store_flags(hv, HeKEY(entry), HeKLEN(entry),
sv, HeHASH(entry), HeKFLAGS(entry));
}