From f54e979d36e226fb2f9aca78efddd46422ce25f1 Mon Sep 17 00:00:00 2001 From: matz Date: Tue, 7 Nov 2006 07:45:57 +0000 Subject: [PATCH] * eval.c (when_check): need to splat for NODE_ARGSCAT as well. [ruby-dev:29860] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ eval.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c17e1a8aab..fbec45f698 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Nov 7 16:41:21 2006 Nobuyoshi Nakada + + * eval.c (when_check): need to splat for NODE_ARGSCAT as well. + [ruby-dev:29860] + Mon Nov 6 22:23:52 2006 Yukihiro Matsumoto * string.c (Init_String): remove duplicated definition of diff --git a/eval.c b/eval.c index 9b8af94f37..cbf0e19606 100644 --- a/eval.c +++ b/eval.c @@ -2723,7 +2723,9 @@ when_check(NODE *tag, VALUE val, VALUE self) } break; case NODE_SPLAT: - elm = splat_value(rb_eval(self, tag->nd_head)); + tag = tag->nd_head; + splat: + elm = splat_value(rb_eval(self, tag)); for (i=0; ind_head, val, self)) return Qtrue; - return when_check(tag->nd_body, val, self); + tag = tag->nd_body; + goto splat; case NODE_ARGSPUSH: if (when_check(tag->nd_head, val, self)) return Qtrue; if (when_cond(val, rb_eval(self, tag->nd_body))) return Qtrue;