diff --git a/src/vm.c b/src/vm.c index 76d6b02c7..654555f3d 100644 --- a/src/vm.c +++ b/src/vm.c @@ -510,11 +510,13 @@ eval_under(mrb_state *mrb, mrb_value self, mrb_value blk, struct RClass *c) } ci = mrb->c->ci; if (ci->acc == CI_ACC_DIRECT) { - return mrb_yield_with_class(mrb, blk, 0, 0, self, c); + return mrb_yield_with_class(mrb, blk, 1, &self, self, c); } ci->target_class = c; p = mrb_proc_ptr(blk); ci->proc = p; + ci->argc = 1; + mrb->c->stack[1] = self; if (MRB_PROC_CFUNC_P(p)) { return p->body.func(mrb, self); }