summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-fiber/src
diff options
context:
space:
mode:
authordearblue <[email protected]>2021-01-10 11:01:51 +0900
committerdearblue <[email protected]>2021-01-12 23:04:36 +0900
commit0229446a305c83c8179ef5d283465f12f4724427 (patch)
tree1eb24f90c689e6c125b7deea3b8c5a7f8a2b7dff /mrbgems/mruby-fiber/src
parentc7d96dbf84e0fab1a84b3589a7f557aa3878211e (diff)
downloadmruby-0229446a305c83c8179ef5d283465f12f4724427.tar.gz
mruby-0229446a305c83c8179ef5d283465f12f4724427.zip
Capture the return value of `Fiber.yield` via C; ref #5261
Diffstat (limited to 'mrbgems/mruby-fiber/src')
-rw-r--r--mrbgems/mruby-fiber/src/fiber.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/mrbgems/mruby-fiber/src/fiber.c b/mrbgems/mruby-fiber/src/fiber.c
index 44125598e..5f45bf04f 100644
--- a/mrbgems/mruby-fiber/src/fiber.c
+++ b/mrbgems/mruby-fiber/src/fiber.c
@@ -225,6 +225,9 @@ fiber_switch(mrb_state *mrb, mrb_value self, mrb_int len, const mrb_value *a, mr
}
else {
value = fiber_result(mrb, a, len);
+ if (vmexec) {
+ c->ci->stack[c->ci[1].acc] = value;
+ }
}
if (vmexec) {