diff --git a/src/mapping.c b/src/mapping.c index 3fe2f43aab276d0c6097dd9da2538be26f9c19f6..dcf35696db2124ef1a031e2a3fa935926518a4ac 100644 --- a/src/mapping.c +++ b/src/mapping.c @@ -278,7 +278,23 @@ PMOD_EXPORT void really_free_mapping_data(struct mapping_data *md) #ifdef PIKE_DEBUG if (md->refs) { Pike_fatal("really_free_mapping_data(): md has non-zero refs: %d\n", - md->refs); + md->refs); + } + + if (!md->size) { + /* Paranoia and keep gcc happy. */ + if (md == &empty_data) { + Pike_fatal("really_free_mapping_data(): md is empty_data!\n"); + } + if (md == &weak_ind_empty_data) { + Pike_fatal("really_free_mapping_data(): md is weak_ind_empty_data!\n"); + } + if (md == &weak_val_empty_data) { + Pike_fatal("really_free_mapping_data(): md is weak_val_empty_data!\n"); + } + if (md == &weak_both_empty_data) { + Pike_fatal("really_free_mapping_data(): md is weak_both_empty_data!\n"); + } } #endif /* PIKE_DEBUG */