diff options
Diffstat (limited to 'class.c')
-rw-r--r-- | class.c | 8 |
1 files changed, 1 insertions, 7 deletions
@@ -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(); } |