diff --git a/class.c b/class.c index de4bffe6b7..736e227925 100644 --- a/class.c +++ b/class.c @@ -825,20 +825,14 @@ VALUE rb_include_class_new(VALUE module, VALUE super) { VALUE klass = class_alloc(T_ICLASS, rb_cClass); - RCLASS_SET_ORIGIN(klass, klass); RCLASS_M_TBL(OBJ_WB_UNPROTECT(klass)) = RCLASS_M_TBL(OBJ_WB_UNPROTECT(module)); /* TODO: unprotected? */ + RCLASS_SET_ORIGIN(klass, module == RCLASS_ORIGIN(module) ? klass : RCLASS_ORIGIN(module)); if (BUILTIN_TYPE(module) == T_ICLASS) { - if (module != RCLASS_ORIGIN(module)) { - RCLASS_SET_ORIGIN(klass, RCLASS_ORIGIN(module)); - } module = RBASIC(module)->klass; } - else if (module != RCLASS_ORIGIN(module)) { - RCLASS_SET_ORIGIN(klass, RCLASS_ORIGIN(module)); - } if (!RCLASS_IV_TBL(module)) { RCLASS_IV_TBL(module) = st_init_numtable(); }