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 */