diff --git a/src/mapping.c b/src/mapping.c index c12be9e684467b28b271a0da5069662cf7812a62..2039457b60e8217334018ffd3fc5ed64be29dd5b 100644 --- a/src/mapping.c +++ b/src/mapping.c @@ -692,6 +692,8 @@ struct mapping_data *copy_mapping_data(struct mapping_data *md) add_ref(nmd); /* For DMALLOC... */ nmd->valrefs=0; nmd->hardlinks=0; + nmd->ind_types = md->ind_types; + nmd->val_types = md->val_types; /* FIXME: What about nmd->flags? */ @@ -1185,6 +1187,10 @@ PMOD_EXPORT void map_delete_no_free(struct mapping *m, m->debug_size--; #endif + if (UNLIKELY(!md->size)) { + md->ind_types = md->val_types = 0; + } + if (!(md->flags & MAPPING_FLAG_NO_SHRINK)) { if((MAP_SLOTS(md->size) < md->hashsize * MIN_LINK_LENGTH) && (md->hashsize > AVG_LINK_LENGTH)) {