diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2011-11-30 13:23:39 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2011-11-30 13:23:39 -0800 |
commit | 42eb490febc7633ed162289921ce997ea4e35d18 (patch) | |
tree | 1be1db64f759c74b90dbc4c32b6ed2d67121ea36 /hash.c | |
parent | 1702ed8df842ca7c80c293e4e5f353dbf370c0fd (diff) | |
download | txr-42eb490febc7633ed162289921ce997ea4e35d18.tar.gz txr-42eb490febc7633ed162289921ce997ea4e35d18.tar.bz2 txr-42eb490febc7633ed162289921ce997ea4e35d18.zip |
* 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.
Diffstat (limited to 'hash.c')
-rw-r--r-- | hash.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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); |