diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-03-14 08:59:12 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-03-14 08:59:12 +0000 |
commit | 07167378cbde84212db9c8d2e2379743cd3628ff (patch) | |
tree | cc98c885980961ab99a2043a6834700e74eb5f45 /proc.c | |
parent | 1f433219918829a6f0afc0f926fc46ea01e3156a (diff) | |
download | ruby-07167378cbde84212db9c8d2e2379743cd3628ff.tar.gz |
* proc.c (rb_proc_parameters): unnamed_parameters() expects int
not VALUE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'proc.c')
-rw-r--r-- | proc.c | 25 |
1 files changed, 13 insertions, 12 deletions
@@ -576,6 +576,13 @@ rb_proc_call_with_block(VALUE self, int argc, VALUE *argv, VALUE pass_procval) static VALUE proc_arity(VALUE self) { + int arity = rb_proc_arity(self); + return INT2FIX(arity); +} + +int +rb_proc_arity(VALUE proc) +{ rb_proc_t *proc; rb_iseq_t *iseq; GetProcPtr(self, proc); @@ -583,27 +590,21 @@ proc_arity(VALUE self) if (iseq) { if (BUILTIN_TYPE(iseq) != T_NODE) { if (iseq->arg_rest < 0) { - return INT2FIX(iseq->argc); + return iseq->argc; } else { - return INT2FIX(-(iseq->argc + 1 + iseq->arg_post_len)); + return -(iseq->argc + 1 + iseq->arg_post_len); } } else { NODE *node = (NODE *)iseq; if (nd_type(node) == NODE_IFUNC && node->nd_cfnc == bmcall) { /* method(:foo).to_proc.arity */ - return INT2FIX(method_arity(node->nd_tval)); + return method_arity(node->nd_tval); } } } - return INT2FIX(-1); -} - -int -rb_proc_arity(VALUE proc) -{ - return FIX2INT(proc_arity(proc)); + return -1; } static rb_iseq_t * @@ -689,7 +690,7 @@ rb_proc_parameters(VALUE self) int is_proc; rb_iseq_t *iseq = get_proc_iseq(self, &is_proc); if (!iseq) { - return unnamed_parameters(proc_arity(self)); + return unnamed_parameters(rb_proc_arity(self)); } return rb_iseq_parameters(iseq, is_proc); } @@ -1814,7 +1815,7 @@ curry(VALUE dummy, VALUE args, int argc, VALUE *argv, VALUE passed_proc) static VALUE proc_curry(int argc, VALUE *argv, VALUE self) { - int sarity, marity = FIX2INT(proc_arity(self)); + int sarity, marity = rb_proc_arity(self); VALUE arity, opt = Qfalse; if (marity < 0) { |