Commit 1b2d84e6 authored by Yukihiro Matz Matsumoto's avatar Yukihiro Matz Matsumoto

Merge branch 'master' of github.com:mruby/mruby

parents f312af11 ca3ee412
......@@ -1184,8 +1184,19 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
mrb_value v = regs[GETARG_A(i)];
switch (GETARG_B(i)) {
case OP_R_RETURN:
// Fall through to OP_R_NORMAL otherwise
if (proc->env && !MRB_PROC_STRICT_P(proc)) {
struct REnv *e = top_env(mrb, proc);
if (e->cioff < 0) {
localjump_error(mrb, "return");
goto L_RAISE;
}
ci = mrb->ci = mrb->cibase + e->cioff;
break;
}
case OP_R_NORMAL:
NORMAL_RETURN:
if (ci == mrb->cibase) {
localjump_error(mrb, "return");
goto L_RAISE;
......@@ -1199,19 +1210,6 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
}
ci = mrb->ci = mrb->cibase + proc->env->cioff + 1;
break;
case OP_R_RETURN:
if (!proc->env) goto NORMAL_RETURN;
if (MRB_PROC_STRICT_P(proc)) goto NORMAL_RETURN;
else {
struct REnv *e = top_env(mrb, proc);
if (e->cioff < 0) {
localjump_error(mrb, "return");
goto L_RAISE;
}
ci = mrb->ci = mrb->cibase + e->cioff;
}
break;
default:
/* cannot happen */
break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment