summaryrefslogtreecommitdiffhomepage
path: root/src/kernel.c
diff options
context:
space:
mode:
authorDaniel Bovensiepen <[email protected]>2012-11-17 13:54:32 +0800
committerDaniel Bovensiepen <[email protected]>2012-11-17 13:54:32 +0800
commitd8234a45759b3bd7b107750fda886cd828b52173 (patch)
tree864fc0207a46d8d2511e66cd1affc53cdf3984c4 /src/kernel.c
parentc3bd1c1d0d43e7571bc38cfa71c40c69cea1b5a4 (diff)
parent7cea9d7b945a4b00cef699f47c07654f8b7bd579 (diff)
downloadmruby-d8234a45759b3bd7b107750fda886cd828b52173.tar.gz
mruby-d8234a45759b3bd7b107750fda886cd828b52173.zip
Merge remote-tracking branch 'upstream/master' into mrbgems
Diffstat (limited to 'src/kernel.c')
-rw-r--r--src/kernel.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/kernel.c b/src/kernel.c
index ac3c10f46..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);
@@ -307,6 +308,9 @@ init_copy(mrb_state *mrb, mrb_value dest, mrb_value obj)
case MRB_TT_OBJECT:
case MRB_TT_CLASS:
case MRB_TT_MODULE:
+ case MRB_TT_SCLASS:
+ case MRB_TT_HASH:
+ case MRB_TT_DATA:
mrb_iv_copy(mrb, dest, obj);
break;