1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-09 21:40:33 +02:00

Field set: per-edge clear callback is optional

This commit is contained in:
Andy Wingo 2024-12-09 14:30:30 +01:00
parent 6a6f5b09e3
commit 2dcdfc24bc

View file

@ -151,15 +151,17 @@ gc_field_set_clear(struct gc_field_set *set,
struct gc_edge_buffer *buf, *next;
for (buf = partly_full; buf; buf = next) {
next = buf->next;
for (size_t i = 0; i < buf->size; i++)
forget_edge(buf->edges[i], heap);
if (forget_edge)
for (size_t i = 0; i < buf->size; i++)
forget_edge(buf->edges[i], heap);
buf->size = 0;
gc_edge_buffer_list_push(&set->empty, buf);
}
for (buf = full; buf; buf = next) {
next = buf->next;
for (size_t i = 0; i < buf->size; i++)
forget_edge(buf->edges[i], heap);
if (forget_edge)
for (size_t i = 0; i < buf->size; i++)
forget_edge(buf->edges[i], heap);
buf->size = 0;
gc_edge_buffer_list_push(&set->empty, buf);
}