summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-11-19 09:49:20 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2018-11-19 09:49:20 +0900
commitcab6b0f39b77098425b1c3c80e8e1d193d5882c8 (patch)
treeb9f812876788c662a5979332eb695868bc96c499 /src
parent25d390d6ccf3da7a853ddd8272dd318ecadca316 (diff)
downloadmruby-cab6b0f39b77098425b1c3c80e8e1d193d5882c8.tar.gz
mruby-cab6b0f39b77098425b1c3c80e8e1d193d5882c8.zip
Protect Fiber from GC in `ecall()`; fix #4104
Diffstat (limited to 'src')
-rw-r--r--src/vm.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/vm.c b/src/vm.c
index 2b88b0761..b899a2d70 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -364,6 +364,9 @@ ecall(mrb_state *mrb)
if (exc) {
mrb_gc_protect(mrb, mrb_obj_value(exc));
}
+ if (mrb->c->fib) {
+ mrb_gc_protect(mrb, mrb_obj_value(mrb->c->fib));
+ }
mrb_run(mrb, p, env->stack[0]);
mrb->c = c;
c->ci = c->cibase + cioff;