summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-04-04 22:17:26 +0900
committerKOBAYASHI Shuji <[email protected]>2019-04-04 22:17:26 +0900
commited41bbb199fb614bb68423d19d26c09c5027319a (patch)
tree3d285d77e06f66d42cb1794884b76f33dee1ad6e /mrbgems
parent50a223f21ff33718f3217ae61ee9fe326f14f935 (diff)
downloadmruby-ed41bbb199fb614bb68423d19d26c09c5027319a.tar.gz
mruby-ed41bbb199fb614bb68423d19d26c09c5027319a.zip
Use `mrb_proc_arity` instead of `Proc#arity` call in `Method#arity`
Diffstat (limited to 'mrbgems')
-rw-r--r--mrbgems/mruby-method/src/method.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/mrbgems/mruby-method/src/method.c b/mrbgems/mruby-method/src/method.c
index fa8985694..9f1134227 100644
--- a/mrbgems/mruby-method/src/method.c
+++ b/mrbgems/mruby-method/src/method.c
@@ -212,19 +212,8 @@ static mrb_value
method_arity(mrb_state *mrb, mrb_value self)
{
mrb_value proc = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "proc"));
- struct RProc *rproc;
- struct RClass *orig;
- mrb_value ret;
-
- if (mrb_nil_p(proc))
- return mrb_fixnum_value(-1);
-
- rproc = mrb_proc_ptr(proc);
- orig = rproc->c;
- rproc->c = mrb->proc_class;
- ret = mrb_funcall(mrb, proc, "arity", 0);
- rproc->c = orig;
- return ret;
+ mrb_int arity = mrb_nil_p(proc) ? -1 : mrb_proc_arity(mrb_proc_ptr(proc));
+ return mrb_fixnum_value(arity);
}
static mrb_value