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