From 02e3dc6ab95fe51786b68a8200322e163f8da478 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 23 Mar 2020 21:36:09 +0100 Subject: 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 . * libguile/weak-set.c (weak_set_add_x): When 'set->items > set->upper', call 'vacuum_weak_set'. --- libguile/weak-set.c | 1 + 1 file changed, 1 insertion(+) 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); } -- cgit v1.2.3