diff options
Diffstat (limited to 'ractor_sync.c')
-rw-r--r-- | ractor_sync.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/ractor_sync.c b/ractor_sync.c index 31ac2df4cf..0fcc293504 100644 --- a/ractor_sync.c +++ b/ractor_sync.c @@ -660,6 +660,16 @@ ractor_sync_mark(rb_ractor_t *r) ractor_mark_monitors(r); } +static int +ractor_sync_free_ports_i(st_data_t _key, st_data_t val, st_data_t _args) +{ + struct ractor_queue *queue = (struct ractor_queue *)val; + + ractor_queue_free(queue); + + return ST_CONTINUE; +} + static void ractor_sync_free(rb_ractor_t *r) { @@ -669,6 +679,7 @@ ractor_sync_free(rb_ractor_t *r) // maybe NULL if (r->sync.ports) { + st_foreach(r->sync.ports, ractor_sync_free_ports_i, 0); st_free_table(r->sync.ports); r->sync.ports = NULL; } |