diff --git a/src/gc.c b/src/gc.c
index 5ed0f7531070f752f4f17654eca92ad05bdcea5c..901ba6efa3da9060ff038d2805c4897cc1920b34 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -29,7 +29,7 @@ struct callback *gc_evaluator_callback=0;
 
 #include "block_alloc.h"
 
-RCSID("$Id: gc.c,v 1.102 2000/07/04 21:44:19 grubba Exp $");
+RCSID("$Id: gc.c,v 1.103 2000/07/06 23:30:40 mast Exp $");
 
 /* Run garbage collect approximately every time
  * 20 percent of all arrays, objects and programs is
@@ -1567,8 +1567,8 @@ static void warn_bad_cycles()
     unsigned cycle = 0;
     ONERROR err;
     struct array *obj_arr = allocate_array(0);
-
     SET_ONERROR(err, do_free_array, obj_arr);
+
     for (p = kill_list; p;) {
       if ((cycle = p->cycle)) {
 	push_object((struct object *) p->data);
@@ -1580,6 +1580,7 @@ static void warn_bad_cycles()
 	  push_constant_text("gc");
 	  push_constant_text("bad_cycle");
 	  push_array(obj_arr);
+	  obj_arr = 0;
 	  SAFE_APPLY_MASTER("runtime_warning", 3);
 	  pop_stack();
 	  obj_arr = allocate_array(0);
@@ -1588,6 +1589,7 @@ static void warn_bad_cycles()
       }
       if (!p) break;
     }
+
     CALL_AND_UNSET_ONERROR(err);
   }
   UNSETJMP(uwp);