diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-03-23 21:36:09 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-03-23 22:49:47 +0100 |
commit | 02e3dc6ab95fe51786b68a8200322e163f8da478 (patch) | |
tree | 385df694e9114e1e47c7fbae98bf7c4c849b260b | |
parent | 168ad279e6bb4be0393a0a23943af535925767fb (diff) | |
download | guile-02e3dc6ab95fe51786b68a8200322e163f8da478.tar.gz |
Ensure weak sets are occasionally vacuumed.
Just like in dc8dda77e0c937abae42a76ea88c6e7995adbd9a, this ensures weak
sets are vacuumed in a timely fashion. It also works around the fact
that 'vacuum_all_weak_tables' isn't getting called more than a couple of
times, for some reason.
Partly fixes <https://bugs.gnu.org/40194>.
* libguile/weak-set.c (weak_set_add_x): When 'set->items > set->upper',
call 'vacuum_weak_set'.
-rw-r--r-- | libguile/weak-set.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libguile/weak-set.c b/libguile/weak-set.c index 8cf1b8286..e71af9a7d 100644 --- a/libguile/weak-set.c +++ b/libguile/weak-set.c @@ -563,6 +563,7 @@ weak_set_add_x (scm_t_weak_set *set, unsigned long hash, if (set->n_items > set->upper) /* Full set, time to resize. */ { + vacuum_weak_set (set); resize_set (set); return weak_set_add_x (set, hash >> 1, pred, closure, obj); } |