diff -ruN klic-3.003-2002-02-22b/include/klic/g_basic.h klic-3.003-2002-02-22c/include/klic/g_basic.h
--- klic-3.003-2002-02-22b/include/klic/g_basic.h	Fri Feb 22 10:54:38 2002
+++ klic-3.003-2002-02-22c/include/klic/g_basic.h	Fri Feb 22 11:18:30 2002
@@ -81,6 +81,8 @@
     assert(g_allocp >= heapp() + (size)); \
     (res) = GENERIC_SUCCEEDED; \
   } \
+  assert((res)==GENERIC_GCREQUEST || \
+        ((res)==GENERIC_SUCCEEDED && g_allocp >= heapp()+(size)) ); \
 }while(0)
 
 
diff -ruN klic-3.003-2002-02-22b/include/klic/gc_macro.h klic-3.003-2002-02-22c/include/klic/gc_macro.h
--- klic-3.003-2002-02-22b/include/klic/gc_macro.h	Fri Feb 22 10:55:26 2002
+++ klic-3.003-2002-02-22c/include/klic/gc_macro.h	Fri Feb 22 11:19:55 2002
@@ -103,6 +103,8 @@
   q res; \
   set_heapp(g_allocp); \
   G_HEAPALLOC_WITH_CHECK((new), (size), type, res); \
+  assert(res==GENERIC_GCREQUEST || \
+        (res==GENERIC_SUCCEEDED && g_allocp >= heapp()+(size)) ); \
   if (GC_GCREQUEST == res) goto gc_request; \
 }while(0)
 
@@ -169,6 +171,8 @@
   q res; \
   set_heapp(g_allocp); \
   G_HEAPALLOC_WITH_CHECK((newgobj), (size), (GC_OBJ_TYPE*), res); \
+  assert(res==GENERIC_GCREQUEST || \
+        (res==GENERIC_SUCCEEDED && g_allocp >= heapp()+(size)) ); \
   if(GC_GCREQUEST == res){ \
     q var; \
     struct goalrec *goal; \
diff -ruN klic-3.003-2002-02-22b/include/klic/gd_macro.h klic-3.003-2002-02-22c/include/klic/gd_macro.h
--- klic-3.003-2002-02-22b/include/klic/gd_macro.h	Wed Feb 20 14:10:04 2002
+++ klic-3.003-2002-02-22c/include/klic/gd_macro.h	Fri Feb 22 11:21:02 2002
@@ -73,6 +73,8 @@
   q res; \
   set_heapp(g_allocp); \
   G_HEAPALLOC_WITH_CHECK((new), (size), type, res); \
+  assert(res==GENERIC_GCREQUEST || \
+        (res==GENERIC_SUCCEEDED && g_allocp >= heapp()+(size)) ); \
   if(GD_GCREQUEST == res){ \
     struct goalrec *goal; \
     g_allocp = \
@@ -88,6 +90,8 @@
   q res; \
   set_heapp(g_allocp); \
   G_HEAPALLOC_WITH_CHECK((new), (size), type, res); \
+  assert(res==GENERIC_GCREQUEST || \
+        (res==GENERIC_SUCCEEDED && g_allocp >= heapp()+(size)) ); \
   if(GD_GCREQUEST == res){ \
     q var; \
     struct goalrec *goal; \
@@ -105,6 +109,8 @@
   q res; \
   set_heapp(g_allocp); \
   G_HEAPALLOC_WITH_CHECK((newgobj), (size), (GD_OBJ_TYPE*), res); \
+  assert(res==GENERIC_GCREQUEST || \
+        (res==GENERIC_SUCCEEDED && g_allocp >= heapp()+(size)) ); \
   if(GENERIC_GCREQUEST == res){ \
     q var; \
     struct goalrec *goal; \
@@ -122,6 +128,8 @@
   set_heapp(g_allocp); \
   G_HEAPALLOC_WITH_CHECK((newgobj), GD_OBJ_SIZE(GD_SELF), \
 			 (GD_OBJ_TYPE*), res); \
+  assert(res==GENERIC_GCREQUEST || \
+        (res==GENERIC_SUCCEEDED && g_allocp >= heapp()+GD_OBJ_SIZE(GD_SELF)) ); \
   if (GD_GCREQUEST == res) { \
     struct goalrec *goal; \
     g_allocp = \
diff -ruN klic-3.003-2002-02-22b/include/klic/gg_macro.h klic-3.003-2002-02-22c/include/klic/gg_macro.h
--- klic-3.003-2002-02-22b/include/klic/gg_macro.h	Fri Feb 22 10:56:00 2002
+++ klic-3.003-2002-02-22c/include/klic/gg_macro.h	Fri Feb 22 11:21:29 2002
@@ -155,6 +155,8 @@
   q res; \
   set_heapp(g_allocp); \
   G_HEAPALLOC_WITH_CHECK((newgobj), GG_OBJ_SIZE, type, res); \
+  assert(res==GENERIC_GCREQUEST || \
+        (res==GENERIC_SUCCEEDED && g_allocp >= heapp()+GG_OBJ_SIZE) ); \
   if(GG_GCREQUEST == res) { \
     q var; \
     struct goalrec *goal; \
diff -ruN klic-3.003-2002-02-22b/runtime/gmvv.c klic-3.003-2002-02-22c/runtime/gmvv.c
--- klic-3.003-2002-02-22b/runtime/gmvv.c	Sun Feb 17 15:19:31 2002
+++ klic-3.003-2002-02-22c/runtime/gmvv.c	Fri Feb 22 11:23:51 2002
@@ -627,6 +627,8 @@
   set_heapp(g_allocp);
   G_HEAPALLOC_WITH_CHECK(newvect, G_SIZE_IN_Q(GD_OBJ_TYPE),
                           (GD_OBJ_TYPE*), res);
+  assert(res==GENERIC_GCREQUEST ||
+        (res==GENERIC_SUCCEEDED && g_allocp >= heapp()+G_SIZE_IN_Q(GD_OBJ_TYPE)) );
   /* G_HEAPALLOC(newvect, G_SIZE_IN_Q(GD_OBJ_TYPE), (GD_OBJ_TYPE*)); */
 
   if(GENERIC_GCREQUEST == res){
@@ -643,6 +645,8 @@
   /* GD_ALLOC_AREA_FOR_NEW(body, (q*), size); */
   set_heapp(g_allocp);
   G_HEAPALLOC_WITH_CHECK(body, size, (q*), res); 
+  assert(res==GENERIC_GCREQUEST ||
+        (res==GENERIC_SUCCEEDED && g_allocp >= heapp()+size) );
   /* G_HEAPALLOC(body, size, (q*)); */
   if(GD_GCREQUEST == res){
       this_more_space += size;
diff -ruN klic-3.003-2002-02-22b/runtime/gstring.c klic-3.003-2002-02-22c/runtime/gstring.c
--- klic-3.003-2002-02-22b/runtime/gstring.c	Sun Feb 17 15:20:23 2002
+++ klic-3.003-2002-02-22c/runtime/gstring.c	Fri Feb 22 11:23:35 2002
@@ -668,6 +668,8 @@
   set_heapp(g_allocp);
   G_HEAPALLOC_WITH_CHECK(newstring, G_SIZE_IN_Q(GD_OBJ_TYPE), 
 			  (GD_OBJ_TYPE*), res);
+  assert(res==GENERIC_GCREQUEST ||
+        (res==GENERIC_SUCCEEDED && g_allocp >= heapp()+G_SIZE_IN_Q(GD_OBJ_TYPE)) );
   /* G_HEAPALLOC(newstring, G_SIZE_IN_Q(GD_OBJ_TYPE), (GD_OBJ_TYPE*)); */
 
   if(GENERIC_GCREQUEST == res){ 
@@ -687,6 +689,8 @@
     q *tmpbody;
     set_heapp(g_allocp);
     G_HEAPALLOC_WITH_CHECK(tmpbody, size, (q*), res); 
+    assert(res==GENERIC_GCREQUEST ||
+          (res==GENERIC_SUCCEEDED && g_allocp >= heapp()+size) );
     body = (unsigned char *) tmpbody;
   }
   /* G_HEAPALLOC(body, size, (unsigned char*)); */
