summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-eval/src/eval.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-07-22 07:29:26 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-07-22 07:29:26 +0900
commit7457da6aa12450d28816b2d6bc734689fef7f730 (patch)
treeebf313d7e9f2c60b88d2f331e89a6aa2f300f761 /mrbgems/mruby-eval/src/eval.c
parent4cc9e5d8b17acbebadad1508300f092db775f361 (diff)
downloadmruby-7457da6aa12450d28816b2d6bc734689fef7f730.tar.gz
mruby-7457da6aa12450d28816b2d6bc734689fef7f730.zip
exception in instance_eval should not exit mrb_run; fix #2483
Diffstat (limited to 'mrbgems/mruby-eval/src/eval.c')
-rw-r--r--mrbgems/mruby-eval/src/eval.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c
index 06baad531..a7bf6ae0f 100644
--- a/mrbgems/mruby-eval/src/eval.c
+++ b/mrbgems/mruby-eval/src/eval.c
@@ -175,6 +175,8 @@ f_eval(mrb_state *mrb, mrb_value self)
mrb_value mrb_obj_instance_eval(mrb_state *mrb, mrb_value self);
+#define CI_ACC_SKIP -1
+
static mrb_value
f_instance_eval(mrb_state *mrb, mrb_value self)
{
@@ -190,10 +192,10 @@ f_instance_eval(mrb_state *mrb, mrb_value self)
mrb_int line = 1;
mrb_get_args(mrb, "s|zi", &s, &len, &file, &line);
-
+ mrb->c->ci->acc = CI_ACC_SKIP;
return mrb_run(mrb, create_proc_from_string(mrb, s, len, mrb_nil_value(), file, line), self);
- } else {
- mrb_get_args(mrb, "&", &b);
+ }
+ else {
return mrb_obj_instance_eval(mrb, self);
}
}