From ece55d084305a379fd8dc276c3f2784fac291415 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Tue, 29 Jan 2013 17:17:30 +0100
Subject: [PATCH] DEBUG: Fixed broken size check for weak mappings.

Fixes fatal "Rehash failed, size not same any more.".
---
 src/mapping.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/mapping.c b/src/mapping.c
index c45c59e528..dce0637a06 100644
--- a/src/mapping.c
+++ b/src/mapping.c
@@ -554,8 +554,10 @@ static struct mapping *rehash(struct mapping *m, int new_size)
   }
 
 #ifdef PIKE_DEBUG
-  if(m->data->size != tmp)
-    Pike_fatal("Rehash failed, size not same any more.\n");
+  if((m->data->size != tmp) &&
+     ((m->data->size > tmp) || !(m->data->flags & MAPPING_WEAK)))
+    Pike_fatal("Rehash failed, size not same any more (%ld != %ld).\n",
+	       (long)m->data->size, (long)tmp);
 #endif
 #ifdef MAPPING_SIZE_DEBUG
   m->debug_size = m->data->size;
-- 
GitLab