diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | hash.c | 2 |
2 files changed, 10 insertions, 1 deletions
@@ -1,5 +1,14 @@ 2011-11-30 Kaz Kylheku <kaz@kylheku.com> + * hash.c (hash_process_weak): Fix regression caused by a mistake + in the the 2010-01-26 commit, prior to release 033. When processing a + table with weak values, this function was mistakenly testing the keys + rather than values for for reachability. I noticed this when a test + case that should run in constant memory showed unwarranted accumulation + of memory. + +2011-11-30 Kaz Kylheku <kaz@kylheku.com> + * eval.c (op_modplace): Bugfix: conflation of new value and increment value. Separate new value and increment value, and check number of arguments. @@ -455,7 +455,7 @@ void hash_process_weak(void) for (iter = pchain; !gc_is_reachable(*iter); ) { val entry = car(*iter); - if (!gc_is_reachable(entry) && !gc_is_reachable(car(entry))) + if (!gc_is_reachable(entry) && !gc_is_reachable(cdr(entry))) *iter = cdr(*iter); else iter = cdr_l(*iter); |