From 865b850b76a56352abe596bd31311d41a58b37fa Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 5 Mar 2014 15:38:13 +0900 Subject: should check crossing C boudary from resume --- mrbgems/mruby-fiber/src/fiber.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mrbgems/mruby-fiber/src/fiber.c b/mrbgems/mruby-fiber/src/fiber.c index 0dbdad871..f2916e209 100644 --- a/mrbgems/mruby-fiber/src/fiber.c +++ b/mrbgems/mruby-fiber/src/fiber.c @@ -154,7 +154,13 @@ fiber_resume(mrb_state *mrb, mrb_value self) struct mrb_context *c = fiber_check(mrb, self); mrb_value *a; int len; + mrb_callinfo *ci; + for (ci = c->ci; ci >= c->cibase; ci--) { + if (ci->acc < 0) { + mrb_raise(mrb, E_ARGUMENT_ERROR, "can't cross C function boundary"); + } + } if (c->status == MRB_FIBER_RESUMED) { mrb_raise(mrb, E_RUNTIME_ERROR, "double resume"); } -- cgit v1.2.3