diff --git a/src/codegen.c b/src/codegen.c index 89af78c63..a943c607a 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -523,7 +523,7 @@ scope_body(codegen_scope *s, node *tree) int idx = scope->idx; if (!s->iseq) { - codegen(scope, tree->cdr, NOVAL); + codegen(scope, tree->cdr, VAL); genop(scope, MKOP_A(OP_STOP, 0)); } else { diff --git a/src/vm.c b/src/vm.c index 5d7fb6072..88b64ac79 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1558,7 +1558,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) /* stop VM */ L_STOP: mrb->jmp = prev_jmp; - return mrb_nil_value(); + return regs[irep->nlocals]; } CASE(OP_ERR) {