summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--gc.c2
2 files changed, 13 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index e5b44930..f98a6c5a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2015-04-24 Kaz Kylheku <kaz@kylheku.com>
+ Regression: runaway allocation of heaps.
+
+ * gc.c (make_obj): Fix regression introduced on 2014-10-18,
+ released in TXR 100. Because make_obj discontinues
+ placing objects into the freshobj_array when the full_gc
+ flag has been set, it is incorrect to allocate another heap
+ when the free list is exhausted and the freshobj_array
+ has room remaining. It has room remaining because it is
+ disused.
+
+2015-04-24 Kaz Kylheku <kaz@kylheku.com>
+
* gc.c (make_obj, gc): The check for insufficient space in freshobj
array after a gc is moved into the gc function.
diff --git a/gc.c b/gc.c
index 799bbf94..53357c0b 100644
--- a/gc.c
+++ b/gc.c
@@ -204,7 +204,7 @@ val make_obj(void)
}
#if CONFIG_GEN_GC
- if (freshobj_idx < FRESHOBJ_VEC_SIZE) {
+ if (!full_gc && freshobj_idx < FRESHOBJ_VEC_SIZE) {
more();
continue;
}