From b2dc93eb0c8cf590a50dab3e6a2b451298c1c742 Mon Sep 17 00:00:00 2001 From: matz Date: Sat, 23 Aug 2003 04:05:42 +0000 Subject: * eval.c (rb_yield_splat): should check if "values" is array. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@4428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 7b480990c..fc5e88bef 100644 --- a/eval.c +++ b/eval.c @@ -4254,11 +4254,20 @@ VALUE rb_yield_splat(values) VALUE values; { - values = svalue_to_avalue(values); - if (RARRAY(values)->len == 0) { - return rb_yield_0(Qundef, 0, 0, Qfalse, Qfalse); + VALUE tmp; + int avalue = Qfalse; + + tmp = rb_check_array_type(values); + if (!NIL_P(tmp)) { + if (RARRAY(tmp)->len == 0) { + values = Qundef; + } + else { + values = tmp; + avalue = Qtrue; + } } - return rb_yield_0(values, 0, 0, Qfalse, Qtrue); + return rb_yield_0(values, 0, 0, Qfalse, avalue); } static VALUE -- cgit