diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | hash.c | 2 |
2 files changed, 11 insertions, 0 deletions
@@ -1,5 +1,14 @@ 2015-06-07 Kaz Kylheku <kaz@kylheku.com> + Critical bugfix for weak hashes. + + * hash.c (hash_mark): Hash tables which have both weak keys + and values were not added to the reachable_weak_hashes list, + and thus not subject to complete hash processing, leading + to corruption. + +2015-06-07 Kaz Kylheku <kaz@kylheku.com> + * lib.h (mkloc): Rename misleading argument from fun to obj. 2015-06-07 Kaz Kylheku <kaz@kylheku.com> @@ -422,6 +422,8 @@ static void hash_mark(val hash) break; case hash_weak_both: /* Values and keys are weak: don't mark anything. */ + h->next = reachable_weak_hashes; + reachable_weak_hashes = h; break; } } |