From 1f67a3900fbd45482ed36ad3b148b321307c1576 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 18 Jul 2017 08:31:02 +0000 Subject: vm_eval.c: rb_lambda_call * enum.c (enum_collect): make the block arity same as the given block. [Bug #13391] * internal.h (vm_ifunc): store arity instead of unused id. * proc.c (rb_vm_block_min_max_arity): return ifunc arity. * vm_eval.c (rb_lambda_call): call method with lambda block. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59358 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- enum.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'enum.c') diff --git a/enum.c b/enum.c index c744665949..d9b9943030 100644 --- a/enum.c +++ b/enum.c @@ -494,11 +494,13 @@ static VALUE enum_collect(VALUE obj) { VALUE ary; + int min_argc, max_argc; RETURN_SIZED_ENUMERATOR(obj, 0, 0, enum_size); ary = rb_ary_new(); - rb_block_call(obj, id_each, 0, 0, collect_i, ary); + min_argc = rb_block_min_max_arity(&max_argc); + rb_lambda_call(obj, id_each, 0, 0, collect_i, min_argc, max_argc, ary); return ary; } -- cgit v1.2.3