From 7dd0d7d27b68792d67a7d06a61d9d66ef40f13b6 Mon Sep 17 00:00:00 2001
From: Martin Stjernholm <mast@lysator.liu.se>
Date: Thu, 14 Sep 2000 17:23:41 +0200
Subject: [PATCH] More gc debug checks.

Rev: src/mapping.c:1.104
---
 src/mapping.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/mapping.c b/src/mapping.c
index 2aa2f0750f..f10d28817a 100644
--- a/src/mapping.c
+++ b/src/mapping.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: mapping.c,v 1.103 2000/09/08 17:31:26 hubbe Exp $");
+RCSID("$Id: mapping.c,v 1.104 2000/09/14 15:23:41 mast Exp $");
 #include "main.h"
 #include "object.h"
 #include "mapping.h"
@@ -197,12 +197,17 @@ PMOD_EXPORT void really_free_mapping_data(struct mapping_data *md)
   INT32 e;
   struct keypair *k;
   debug_malloc_touch(md);
+
 #ifdef PIKE_DEBUG
+  if (Pike_in_gc > GC_PASS_PREPARE && Pike_in_gc < GC_PASS_ZAP_WEAK)
+    fatal("Can't free a mapping_data inside gc.\n");
+
   if (md->refs) {
     fatal("really_free_mapping_data(): md has non-zero refs: %d\n",
 	  md->refs);
   }
 #endif /* PIKE_DEBUG */
+
   NEW_MAPPING_LOOP(md)
   {
     free_svalue(& k->val);
@@ -306,6 +311,9 @@ static struct mapping *rehash(struct mapping *m, int new_size)
   if(md->refs <=0)
     fatal("Zero refs in mapping->data\n");
 
+  if (Pike_in_gc > GC_PASS_PREPARE && Pike_in_gc < GC_PASS_ZAP_WEAK)
+    fatal("Can't rehash a mapping inside gc.\n");
+
   if(d_flag>1)  check_mapping(m);
 #endif
 
-- 
GitLab