From 181f980b6cc5dfa25b270e137c6d060a897b8bf4 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 10 Nov 2017 21:53:12 +0900 Subject: Need to clear stack region for local variables in eval; fix #3844 --- mrbgems/mruby-eval/src/eval.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'mrbgems/mruby-eval/src') diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c index 997b69e25..14e89ac14 100644 --- a/mrbgems/mruby-eval/src/eval.c +++ b/mrbgems/mruby-eval/src/eval.c @@ -273,13 +273,17 @@ create_proc_from_string(mrb_state *mrb, char *s, mrb_int len, mrb_value binding, static mrb_value exec_irep(mrb_state *mrb, mrb_value self, struct RProc *proc) { + /* no argument passed from eval() */ + mrb->c->ci->argc = 0; if (mrb->c->ci->acc < 0) { - mrb_value ret = mrb_top_run(mrb, proc, mrb->c->stack[0], 0); + mrb_value ret = mrb_top_run(mrb, proc, self, 0); if (mrb->exc) { mrb_exc_raise(mrb, mrb_obj_value(mrb->exc)); } return ret; } + /* clear block */ + mrb->c->stack[1] = mrb_nil_value(); return mrb_exec_irep(mrb, self, proc); } -- cgit v1.2.3