diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-10-05 08:56:34 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-10-05 08:56:34 +0000 |
commit | bf040c9c69e612d5546f48882179463c59e93a15 (patch) | |
tree | d119d2d68c21cc5a0ca989297832ed8778c94595 /eval.c | |
parent | 6243665bc44ebbdb30d1fc3ec0c0b6fbcb961cc0 (diff) | |
download | ruby-bf040c9c69e612d5546f48882179463c59e93a15.tar.gz ruby-bf040c9c69e612d5546f48882179463c59e93a15.tar.xz ruby-bf040c9c69e612d5546f48882179463c59e93a15.zip |
* eval.c (rb_eval): fix evaluation order. [ruby-list:38431]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@4695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 21 |
1 files changed, 15 insertions, 6 deletions
@@ -2477,8 +2477,11 @@ rb_eval(self, n) /* nodes for speed-up(literal match) */ case NODE_MATCH2: - result = rb_reg_match(rb_eval(self,node->nd_recv), - rb_eval(self,node->nd_value)); + { + VALUE l = rb_eval(self,node->nd_recv); + VALUE r = rb_eval(self,node->nd_value); + result = rb_reg_match(l, r); + } break; /* nodes for speed-up(literal match) */ @@ -2929,13 +2932,19 @@ rb_eval(self, n) break; case NODE_ARGSCAT: - result = rb_ary_concat(rb_eval(self, node->nd_head), - splat_value(rb_eval(self, node->nd_body))); + { + VALUE args = rb_eval(self, node->nd_head); + result = rb_ary_concat(args, + splat_value(rb_eval(self, node->nd_body))); + } break; case NODE_ARGSPUSH: - result = rb_ary_push(rb_ary_dup(rb_eval(self, node->nd_head)), - rb_eval(self, node->nd_body)); + { + VALUE args = rb_ary_dup(rb_eval(self, node->nd_head)); + result = rb_ary_push(args, + rb_eval(self, node->nd_body)); + } break; case NODE_ATTRASGN: |