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 | 46e1454dea07eeb4396a85f41dc5753055a17b06 (patch) | |
tree | e44b364903181a7f769eb1def459e817a82be00b /eval.c | |
parent | fc63eb3a7763d460a451af88dc34403a7977749a (diff) | |
download | ruby-46e1454dea07eeb4396a85f41dc5753055a17b06.tar.gz |
* eval.c (rb_yield_splat): should check if "values" is array.
git-svn-id: svn+ssh://ci.ruby-lang.org/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 |