summaryrefslogtreecommitdiff
path: root/class.c
diff options
context:
space:
mode:
Diffstat (limited to 'class.c')
-rw-r--r--class.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/class.c b/class.c
index 7b537e213a..865197b843 100644
--- a/class.c
+++ b/class.c
@@ -298,19 +298,14 @@ make_metaclass(VALUE klass)
static inline VALUE
make_singleton_class(VALUE obj)
{
- VALUE metasuper;
- VALUE super = RBASIC(obj)->klass;
- VALUE klass = rb_class_boot(super);
+ VALUE orig_class = RBASIC(obj)->klass;
+ VALUE klass = rb_class_boot(orig_class);
FL_SET(klass, FL_SINGLETON);
RBASIC(obj)->klass = klass;
rb_singleton_class_attached(klass, obj);
- metasuper = RBASIC(rb_class_real(super))->klass;
- /* metaclass of a superclass may be NULL at boot time */
- if (metasuper) {
- RBASIC(klass)->klass = metasuper;
- }
+ METACLASS_OF(klass) = METACLASS_OF(rb_class_real(orig_class));
return klass;
}