diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-08-23 04:05:42 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-08-23 04:05:42 +0000 |
commit | b2dc93eb0c8cf590a50dab3e6a2b451298c1c742 (patch) | |
tree | e44b364903181a7f769eb1def459e817a82be00b /eval.c | |
parent | d811db2bb6c78a8c7443a7274ab8f58eaafd7d45 (diff) | |
download | ruby-b2dc93eb0c8cf590a50dab3e6a2b451298c1c742.tar.gz ruby-b2dc93eb0c8cf590a50dab3e6a2b451298c1c742.tar.xz ruby-b2dc93eb0c8cf590a50dab3e6a2b451298c1c742.zip |
* 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
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -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 |