From 4be85ae17546b42a3fafc7397243f6a0a91ff662 Mon Sep 17 00:00:00 2001
From: Martin Stjernholm <mast@lysator.liu.se>
Date: Fri, 7 Jul 2000 01:30:40 +0200
Subject: [PATCH] Fixed a slight risk for freeing memory twice.

Rev: src/gc.c:1.103
---
 src/gc.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gc.c b/src/gc.c
index 5ed0f75310..901ba6efa3 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);
-- 
GitLab