summaryrefslogtreecommitdiffhomepage
path: root/src/kernel.c
diff options
context:
space:
mode:
authorYukihiro Matz Matsumoto <[email protected]>2012-11-16 11:34:16 +0900
committerYukihiro Matz Matsumoto <[email protected]>2012-11-16 11:34:16 +0900
commita5d7ebbad04ce2f09aa1b603e471b3f161b5cc63 (patch)
treeb2496f928a7b19bc9f17abed951f61c11fdfdd87 /src/kernel.c
parent8856c8924651d0ad9779c9256a1b0d35fb4d748a (diff)
downloadmruby-a5d7ebbad04ce2f09aa1b603e471b3f161b5cc63.tar.gz
mruby-a5d7ebbad04ce2f09aa1b603e471b3f161b5cc63.zip
prepare metaclass of metaclass when retrieving by singleton_class(); close #540
Diffstat (limited to 'src/kernel.c')
-rw-r--r--src/kernel.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/kernel.c b/src/kernel.c
index d467a34da..adb616466 100644
--- a/src/kernel.c
+++ b/src/kernel.c
@@ -287,7 +287,8 @@ mrb_singleton_class_clone(mrb_state *mrb, mrb_value obj)
clone->super = klass->super;
if (klass->iv) {
- clone->iv = klass->iv;
+ mrb_iv_copy(mrb, mrb_obj_value(clone), mrb_obj_value(klass));
+ mrb_obj_iv_set(mrb, (struct RObject*)clone, mrb_intern(mrb, "__attached__"), obj);
}
if (klass->mt) {
clone->mt = kh_copy(mt, mrb, klass->mt);