summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/class.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/class.c b/src/class.c
index 530fc5ce4..136a07cb6 100644
--- a/src/class.c
+++ b/src/class.c
@@ -293,6 +293,9 @@ mrb_define_method_raw(mrb_state *mrb, struct RClass *c, mrb_sym mid, struct RPro
if (!h) h = c->mt = kh_init(mt, mrb);
k = kh_put(mt, h, mid);
kh_value(h, k) = p;
+ if (p) {
+ mrb_field_write_barrier(mrb, (struct RBasic *)c, (struct RBasic *)p);
+ }
}
void
@@ -322,6 +325,9 @@ mrb_define_method_vm(mrb_state *mrb, struct RClass *c, mrb_sym name, mrb_value b
k = kh_put(mt, h, name);
p = mrb_proc_ptr(body);
kh_value(h, k) = p;
+ if (p) {
+ mrb_field_write_barrier(mrb, (struct RBasic *)c, (struct RBasic *)p);
+ }
}
static mrb_value