summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authortenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-04-17 06:13:11 +0000
committertenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-04-17 06:13:11 +0000
commit7bd58a4e6d214b78645f0a15dcc691d3faaa1acf (patch)
tree3663485cc5aeceb71be28bad45c009ec3ca5dfee /gc.c
parente1eb54b99d592c460fea4b0f897f5e8e61c96c07 (diff)
update super even if there is no ext
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67583 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gc.c b/gc.c
index 37bdcbb7af..2a466b9f47 100644
--- a/gc.c
+++ b/gc.c
@@ -7819,26 +7819,26 @@ gc_update_object_references(rb_objspace_t *objspace, VALUE obj)
case T_CLASS:
case T_MODULE:
update_m_tbl(objspace, RCLASS_M_TBL(obj));
+ UPDATE_IF_MOVED(objspace, RCLASS(obj)->super);
if (!RCLASS_EXT(obj)) break;
if (RCLASS_IV_TBL(obj)) {
gc_update_table_refs(objspace, RCLASS_IV_TBL(obj));
}
update_class_ext(objspace, RCLASS_EXT(obj));
update_const_tbl(objspace, RCLASS_CONST_TBL(obj));
- UPDATE_IF_MOVED(objspace, RCLASS(obj)->super);
break;
case T_ICLASS:
if (FL_TEST(obj, RICLASS_IS_ORIGIN)) {
update_m_tbl(objspace, RCLASS_M_TBL(obj));
}
+ UPDATE_IF_MOVED(objspace, RCLASS(obj)->super);
if (!RCLASS_EXT(obj)) break;
if (RCLASS_IV_TBL(obj)) {
gc_update_table_refs(objspace, RCLASS_IV_TBL(obj));
}
update_class_ext(objspace, RCLASS_EXT(obj));
update_m_tbl(objspace, RCLASS_CALLABLE_M_TBL(obj));
- UPDATE_IF_MOVED(objspace, RCLASS(obj)->super);
break;
case T_IMEMO: