summaryrefslogtreecommitdiffhomepage
path: root/src/proc.c
diff options
context:
space:
mode:
authorcremno <[email protected]>2015-06-22 13:34:24 +0200
committercremno <[email protected]>2015-06-22 13:34:24 +0200
commitf0eaf9eaf53ce659c44ce6beeedbeb8bfc5b4efa (patch)
tree24157e0c89c1fce3e85335d513e1323f4743c490 /src/proc.c
parente344c6ab6d7b3d6a8ffcec6f7f96aeba6c5fdeda (diff)
downloadmruby-f0eaf9eaf53ce659c44ce6beeedbeb8bfc5b4efa.tar.gz
mruby-f0eaf9eaf53ce659c44ce6beeedbeb8bfc5b4efa.zip
fix arity of lambdas with optional arguments
From the CRuby 2.2.2 Proc#arity documentation: If the block has optional arguments, returns -n-1, where n is the number of mandatory arguments, with the exception for blocks that are not lambdas and have only a finite number of optional arguments; in this latter case, returns n.
Diffstat (limited to 'src/proc.c')
-rw-r--r--src/proc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/proc.c b/src/proc.c
index 4cb9ffe18..61524f00c 100644
--- a/src/proc.c
+++ b/src/proc.c
@@ -216,7 +216,7 @@ mrb_proc_arity(mrb_state *mrb, mrb_value self)
ma = MRB_ASPEC_REQ(aspec);
ra = MRB_ASPEC_REST(aspec);
pa = MRB_ASPEC_POST(aspec);
- arity = ra ? -(ma + pa + 1) : ma + pa;
+ arity = ra || MRB_PROC_STRICT_P(p) ? -(ma + pa + 1) : ma + pa;
return mrb_fixnum_value(arity);
}