summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-fiber
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-06-21 17:59:14 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-06-21 17:59:14 +0900
commite8a4e4262a425d9e5e8e19c40bf987d491f73053 (patch)
tree6cde64e941eb967eb458f5e1d14eae30a53ef869 /mrbgems/mruby-fiber
parent464d3fc0a329ba045052b07fdbfbc3e37dc787d2 (diff)
downloadmruby-e8a4e4262a425d9e5e8e19c40bf987d491f73053.tar.gz
mruby-e8a4e4262a425d9e5e8e19c40bf987d491f73053.zip
Add write barrier to protect proc reference from fiber; fix #3719
Diffstat (limited to 'mrbgems/mruby-fiber')
-rw-r--r--mrbgems/mruby-fiber/src/fiber.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/mrbgems/mruby-fiber/src/fiber.c b/mrbgems/mruby-fiber/src/fiber.c
index 8a6146dbe..0a6d92f67 100644
--- a/mrbgems/mruby-fiber/src/fiber.c
+++ b/mrbgems/mruby-fiber/src/fiber.c
@@ -125,6 +125,7 @@ fiber_init(mrb_state *mrb, mrb_value self)
ci = c->ci;
ci->target_class = p->target_class;
ci->proc = p;
+ mrb_field_write_barrier(mrb, (struct RBasic*)mrb_obj_ptr(self), (struct RBasic*)p);
ci->pc = p->body.irep->iseq;
ci->nregs = p->body.irep->nregs;
ci[1] = ci[0];