1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Super should be marked regardless of whether or not ext exists

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67584 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tenderlove 2019-04-17 06:16:35 +00:00
parent 7bd58a4e6d
commit 281a22a398

4
gc.c
View file

@ -4981,19 +4981,19 @@ gc_mark_children(rb_objspace_t *objspace, VALUE obj)
case T_CLASS: case T_CLASS:
case T_MODULE: case T_MODULE:
mark_m_tbl(objspace, RCLASS_M_TBL(obj)); mark_m_tbl(objspace, RCLASS_M_TBL(obj));
gc_mark(objspace, RCLASS_SUPER((VALUE)obj));
if (!RCLASS_EXT(obj)) break; if (!RCLASS_EXT(obj)) break;
mark_tbl_no_pin(objspace, RCLASS_IV_TBL(obj)); mark_tbl_no_pin(objspace, RCLASS_IV_TBL(obj));
mark_const_tbl(objspace, RCLASS_CONST_TBL(obj)); mark_const_tbl(objspace, RCLASS_CONST_TBL(obj));
gc_mark(objspace, RCLASS_SUPER((VALUE)obj));
break; break;
case T_ICLASS: case T_ICLASS:
if (FL_TEST(obj, RICLASS_IS_ORIGIN)) { if (FL_TEST(obj, RICLASS_IS_ORIGIN)) {
mark_m_tbl(objspace, RCLASS_M_TBL(obj)); mark_m_tbl(objspace, RCLASS_M_TBL(obj));
} }
gc_mark(objspace, RCLASS_SUPER((VALUE)obj));
if (!RCLASS_EXT(obj)) break; if (!RCLASS_EXT(obj)) break;
mark_m_tbl(objspace, RCLASS_CALLABLE_M_TBL(obj)); mark_m_tbl(objspace, RCLASS_CALLABLE_M_TBL(obj));
gc_mark(objspace, RCLASS_SUPER((VALUE)obj));
break; break;
case T_ARRAY: case T_ARRAY: