From df38160d820136d674856e2d5518011edd2798da Mon Sep 17 00:00:00 2001 From: dearblue Date: Wed, 20 May 2026 21:15:54 +0900 Subject: [PATCH] Omit the check whether the typetag is `MRB_TT_FREE` after calling `obj_free()` With commit cbc3dbedb4cd76f90e13ca3b2a32d213ce5b0d51, freed objects will always be `MRB_TT_FREE`. --- src/gc.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/gc.c b/src/gc.c index 0654646c1..f8021c6b1 100644 --- a/src/gc.c +++ b/src/gc.c @@ -1230,14 +1230,10 @@ incremental_sweep_phase(mrb_state *mrb, mrb_gc *gc, size_t limit) if (is_dead(gc, &p->as.basic)) { if (p->as.basic.tt != MRB_TT_FREE) { obj_free(mrb, &p->as.basic, FALSE); - if (p->as.basic.tt == MRB_TT_FREE) { - p->as.free.next = page->freelist; - page->freelist = p; - freed++; - } - else { - dead_slot = FALSE; - } + mrb_assert(p->as.basic.tt == MRB_TT_FREE); + p->as.free.next = page->freelist; + page->freelist = p; + freed++; } } else {