summaryrefslogtreecommitdiff
path: root/hv.c
diff options
context:
space:
mode:
Diffstat (limited to 'hv.c')
-rw-r--r--hv.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/hv.c b/hv.c
index 7ae2340835..ffaf65c43a 100644
--- a/hv.c
+++ b/hv.c
@@ -162,10 +162,11 @@ register U32 hash;
}
SV *
-hv_delete(hv,key,klen)
+hv_delete(hv,key,klen,flags)
HV *hv;
char *key;
U32 klen;
+I32 flags;
{
register XPVHV* xhv;
register char *s;
@@ -207,7 +208,10 @@ U32 klen;
*oentry = entry->hent_next;
if (i && !*oentry)
xhv->xhv_fill--;
- sv = sv_mortalcopy(entry->hent_val);
+ if (flags & G_DISCARD)
+ sv = Nullsv;
+ else
+ sv = sv_mortalcopy(entry->hent_val);
if (entry == xhv->xhv_eiter)
entry->hent_klen = -1;
else