From ad9e841c5359efdd37a132767e03ad7a2d5ae72e Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Thu, 24 May 2012 01:09:36 +0900 Subject: made mrb_get_args() better (optinal args, type checks); close #173 #176 --- src/vm.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'src/vm.c') diff --git a/src/vm.c b/src/vm.c index 37ad706d6..b2a7b33d1 100644 --- a/src/vm.c +++ b/src/vm.c @@ -160,7 +160,7 @@ ecall(mrb_state *mrb, int i) } mrb_value -mrb_funcall_with_block(mrb_state *mrb, mrb_value self, const char *name, int argc, mrb_value *argv, struct RProc *blk) +mrb_funcall_with_block(mrb_state *mrb, mrb_value self, const char *name, int argc, mrb_value *argv, mrb_value blk) { struct RProc *p; struct RClass *c; @@ -197,12 +197,7 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, const char *name, int arg else if (argc > 0) { memcpy(mrb->stack+1, argv, sizeof(mrb_value)*argc); } - if (!blk) { - mrb->stack[argc+1] = mrb_nil_value(); - } - else { - mrb->stack[argc+1] = mrb_obj_value(blk); - } + mrb->stack[argc+1] = blk; if (MRB_PROC_CFUNC_P(p)) { val = p->body.func(mrb, self); @@ -218,7 +213,7 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, const char *name, int arg mrb_value mrb_funcall_argv(mrb_state *mrb, mrb_value self, const char *name, int argc, mrb_value *argv) { - return mrb_funcall_with_block(mrb, self, name, argc, argv, 0); + return mrb_funcall_with_block(mrb, self, name, argc, argv, mrb_nil_value()); } mrb_value -- cgit v1.2.3