summaryrefslogtreecommitdiffhomepage
path: root/src/kernel.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-06-22 01:20:22 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-06-22 01:20:22 +0900
commitc41e262667faa0edea31e47d133276c1dc72ef06 (patch)
treecb2f0b4bd6512e7171db942dc1a80ac9edc6e554 /src/kernel.c
parentaf0bef6dd8da9520ef1a124b63e46245609153f3 (diff)
downloadmruby-c41e262667faa0edea31e47d133276c1dc72ef06.tar.gz
mruby-c41e262667faa0edea31e47d133276c1dc72ef06.zip
Add write barrier to protect singleton class from GC; fix #3717
Diffstat (limited to 'src/kernel.c')
-rw-r--r--src/kernel.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/kernel.c b/src/kernel.c
index 20f52922d..d7f18b677 100644
--- a/src/kernel.c
+++ b/src/kernel.c
@@ -318,6 +318,7 @@ mrb_obj_clone(mrb_state *mrb, mrb_value self)
}
p = (struct RObject*)mrb_obj_alloc(mrb, mrb_type(self), mrb_obj_class(mrb, self));
p->c = mrb_singleton_class_clone(mrb, self);
+ mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)p->c);
clone = mrb_obj_value(p);
init_copy(mrb, clone, self);