diff options
-rw-r--r-- | gc/default/default.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gc/default/default.c b/gc/default/default.c index c0e7953842..4dc4776fc5 100644 --- a/gc/default/default.c +++ b/gc/default/default.c @@ -3663,7 +3663,10 @@ gc_sweep_page(rb_objspace_t *objspace, rb_heap_t *heap, struct gc_sweep_context struct free_slot *ptr = sweep_page->freelist; while (ptr) { freelist_len++; - ptr = ptr->next; + asan_unpoison_object((VALUE)ptr, false); + struct free_slot *next = ptr->next; + asan_poison_object((VALUE)ptr); + ptr = next; } asan_lock_freelist(sweep_page); if (freelist_len != sweep_page->free_slots) { |