diff --git a/gc.c b/gc.c index cd136cb..87aad90 100644 --- a/gc.c +++ b/gc.c @@ -1709,7 +1709,12 @@ mark_m_tbl(rb_objspace_t *objspace, st_table *tbl, int lev) static int free_method_entry_i(ID key, rb_method_entry_t *me, st_data_t data) { - rb_free_method_entry(me); + if (me->mark) { + me->mark = 0; + } + else { + rb_free_method_entry(me); + } return ST_CONTINUE; }