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:
parent
6a6f5b09e3
commit
2dcdfc24bc
1 changed files with 6 additions and 4 deletions
|
@ -151,15 +151,17 @@ gc_field_set_clear(struct gc_field_set *set,
|
||||||
struct gc_edge_buffer *buf, *next;
|
struct gc_edge_buffer *buf, *next;
|
||||||
for (buf = partly_full; buf; buf = next) {
|
for (buf = partly_full; buf; buf = next) {
|
||||||
next = buf->next;
|
next = buf->next;
|
||||||
for (size_t i = 0; i < buf->size; i++)
|
if (forget_edge)
|
||||||
forget_edge(buf->edges[i], heap);
|
for (size_t i = 0; i < buf->size; i++)
|
||||||
|
forget_edge(buf->edges[i], heap);
|
||||||
buf->size = 0;
|
buf->size = 0;
|
||||||
gc_edge_buffer_list_push(&set->empty, buf);
|
gc_edge_buffer_list_push(&set->empty, buf);
|
||||||
}
|
}
|
||||||
for (buf = full; buf; buf = next) {
|
for (buf = full; buf; buf = next) {
|
||||||
next = buf->next;
|
next = buf->next;
|
||||||
for (size_t i = 0; i < buf->size; i++)
|
if (forget_edge)
|
||||||
forget_edge(buf->edges[i], heap);
|
for (size_t i = 0; i < buf->size; i++)
|
||||||
|
forget_edge(buf->edges[i], heap);
|
||||||
buf->size = 0;
|
buf->size = 0;
|
||||||
gc_edge_buffer_list_push(&set->empty, buf);
|
gc_edge_buffer_list_push(&set->empty, buf);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue