diff -ruN klic-3.003-2002-02-22a/include/klic/g_basic.h klic-3.003-2002-02-22b/include/klic/g_basic.h
--- klic-3.003-2002-02-22a/include/klic/g_basic.h	Fri Feb 22 10:35:19 2002
+++ klic-3.003-2002-02-22b/include/klic/g_basic.h	Fri Feb 22 10:54:38 2002
@@ -78,6 +78,7 @@
     (res) = GENERIC_GCREQUEST; \
   } else { \
     G_HEAPALLOC((from), (size), type); \
+    assert(g_allocp >= heapp() + (size)); \
     (res) = GENERIC_SUCCEEDED; \
   } \
 }while(0)
@@ -89,6 +90,7 @@
 #define G_MAKE_VAR(x) \
 do{ \
   G_HEAPALLOC((x), 1, (q)); \
+  assert(g_allocp >= heapp() + 1); \
   derefone(x) = (x); \
 }while(0)
 
diff -ruN klic-3.003-2002-02-22a/include/klic/gc_macro.h klic-3.003-2002-02-22b/include/klic/gc_macro.h
--- klic-3.003-2002-02-22a/include/klic/gc_macro.h	Wed Feb 20 13:30:40 2002
+++ klic-3.003-2002-02-22b/include/klic/gc_macro.h	Fri Feb 22 10:55:26 2002
@@ -306,6 +306,7 @@
 do{ \
   struct goalrec *gp; \
   G_HEAPALLOC(gp, 4, (struct goalrec *)); \
+  assert(g_allocp >= heapp() + 4); \
   gp->pred = &predicate_unify__term__dcode_xunify__goal_2; \
   gp->args[0] = (x); \
   gp->args[1] = (y); \
diff -ruN klic-3.003-2002-02-22a/include/klic/gg_macro.h klic-3.003-2002-02-22b/include/klic/gg_macro.h
--- klic-3.003-2002-02-22a/include/klic/gg_macro.h	Wed Feb 20 14:36:54 2002
+++ klic-3.003-2002-02-22b/include/klic/gg_macro.h	Fri Feb 22 10:56:00 2002
@@ -105,6 +105,7 @@
 #define GG_TRY_TO_ALLOC(new,type,size,label) \
 do{ \
   G_HEAPALLOC((new), (size), type); \
+  assert(g_allocp >= heapp() + (size)); \
   if((long)real_heaplimit <= (long)(g_allocp)) { \
     goto label; \
   } \
@@ -246,6 +247,7 @@
 do{ \
   struct goalrec *gp; \
   G_HEAPALLOC(gp, 4, (struct goalrec *)); \
+  assert(g_allocp >= heapp() + 4); \
   gp->pred = &predicate_unify__term__dcode_xunify__goal_2; \
   gp->args[0] = (x); \
   gp->args[1] = (y); \
diff -ruN klic-3.003-2002-02-22a/runtime/gcode.c klic-3.003-2002-02-22b/runtime/gcode.c
--- klic-3.003-2002-02-22a/runtime/gcode.c	Fri Feb  8 15:40:09 2002
+++ klic-3.003-2002-02-22b/runtime/gcode.c	Fri Feb 22 10:56:33 2002
@@ -95,6 +95,7 @@
 #define GD_ALLOC_GOAL(goal, pdesc, size) \
 do{ \
   G_HEAPALLOC(goal, (size)+2, (struct goalrec*)); \
+  assert(g_allocp >= heapp() + (size)+2); \
   (goal)->pred = (pdesc); \
 }while(0)
 
diff -ruN klic-3.003-2002-02-22a/runtime/generic.c klic-3.003-2002-02-22b/runtime/generic.c
--- klic-3.003-2002-02-22a/runtime/generic.c	Wed Feb 20 13:20:48 2002
+++ klic-3.003-2002-02-22b/runtime/generic.c	Fri Feb 22 10:58:19 2002
@@ -50,12 +50,14 @@
   int i;
 
   G_HEAPALLOC(objp, G_SIZE_IN_Q(struct functor)+argc-1, makefunctor);
+  assert(g_allocp >= heapp() + G_SIZE_IN_Q(struct functor)+argc-1);
   functor_of(objp) = makesym(method_functor);
   for( i=0; i<argc; i++ ){
     arg(objp, i) = argv[i];
   }
 
   G_HEAPALLOC(*goalp1, G_SIZE_IN_Q(struct goalrec)-4, (struct goalrec*));
+  assert(g_allocp >= heapp() + G_SIZE_IN_Q(struct goalrec)-4);
   (*goalp1)->pred    = GD_GENERIC_GOAL;
   (*goalp1)->args[0] = objp;
   (*goalp1)->args[1] = var;
@@ -78,6 +80,7 @@
   g_allocp = heapp();
 
   G_HEAPALLOC(*goalp1, G_SIZE_IN_Q(struct goalrec)-3, (struct goalrec*));
+  assert(g_allocp >= heapp() + G_SIZE_IN_Q(struct goalrec)-3);
   G_MAKE_VAR(newvar);
   (*goalp1)->pred    = G_NEW_GOAL;
   (*goalp1)->args[0] = newvar;
diff -ruN klic-3.003-2002-02-22a/runtime/gfloat.c klic-3.003-2002-02-22b/runtime/gfloat.c
--- klic-3.003-2002-02-22a/runtime/gfloat.c	Sat Feb 16 11:56:54 2002
+++ klic-3.003-2002-02-22b/runtime/gfloat.c	Fri Feb 22 10:58:40 2002
@@ -411,6 +411,7 @@
 
   ALIGN();
   G_HEAPALLOC(newobj, G_SIZE_IN_Q(GD_OBJ_TYPE), (GD_OBJ_TYPE*));
+  assert(g_allocp >= heapp() + G_SIZE_IN_Q(GD_OBJ_TYPE));
 
   newobj->method_table = &GD_method_table;
   if( sizeof(long) == sizeof(double) ){
diff -ruN klic-3.003-2002-02-22a/runtime/gmerge.c klic-3.003-2002-02-22b/runtime/gmerge.c
--- klic-3.003-2002-02-22a/runtime/gmerge.c	Mon Jan 21 20:55:25 2002
+++ klic-3.003-2002-02-22b/runtime/gmerge.c	Fri Feb 22 10:59:11 2002
@@ -29,6 +29,7 @@
 do{ \
   struct goalrec *goalp1; \
   G_HEAPALLOC(goalp1,G_SIZE_IN_Q(struct goalrec)-2,(struct goalrec *)); \
+  assert(g_allocp >= heapp() + G_SIZE_IN_Q(struct goalrec)-2); \
   goalp1->pred = GC_MERGE_IN_GOAL; \
   goalp1->args[0] = newvar; \
   goalp1->args[1] = vec; \
diff -ruN klic-3.003-2002-02-22a/runtime/gpointer.c klic-3.003-2002-02-22b/runtime/gpointer.c
--- klic-3.003-2002-02-22a/runtime/gpointer.c	Fri Jan 11 09:45:19 2002
+++ klic-3.003-2002-02-22b/runtime/gpointer.c	Fri Feb 22 11:01:29 2002
@@ -54,6 +54,7 @@
   GD_OBJ_TYPE *newobj;
   if (GD_ARGC != 1) GD_FAIL("Argument mismatch in pointer:new");
   G_HEAPALLOC(newobj,GD_OBJ_SIZE(newobj),(GD_OBJ_TYPE *));
+  assert(g_allocp >= heapp() + GD_OBJ_SIZE(newobj));
   newobj->method_table = &GD_method_table;
   newobj->pointer = (char *)GD_ARGV[0];
   GD_RETURN_FROM_NEW(newobj);
diff -ruN klic-3.003-2002-02-22a/runtime/gtermarray.c klic-3.003-2002-02-22b/runtime/gtermarray.c
--- klic-3.003-2002-02-22a/runtime/gtermarray.c	Fri Jan 11 09:23:12 2002
+++ klic-3.003-2002-02-22b/runtime/gtermarray.c	Fri Feb 22 11:02:24 2002
@@ -63,6 +63,7 @@
   int i;
 
   G_HEAPALLOC(newobj,G_SIZE_IN_Q(GD_OBJ_TYPE)+size-1,(GD_OBJ_TYPE *));
+  assert(g_allocp >= heapp() + G_SIZE_IN_Q(GD_OBJ_TYPE)+size-1);
   newobj->method_table = &GD_method_table;
   newobj->nterm = size;
   for (i=0; i<size; i++) {
