diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-05-17 08:49:44 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-05-17 08:49:44 +0000 |
commit | c2fa753f7db4ea07c50ec8a182f78b1a263e0709 (patch) | |
tree | d369e79d50446002f3bbffa4137e0e0d64ca424f /eval.c | |
parent | ddb81a78f3596149758ff2e90454f30a7b90050b (diff) |
* eval.c (rb_call0): address of local_vars might change during eval.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -4435,11 +4435,15 @@ rb_call0(klass, recv, id, argc, argv, body, nosuper) } rb_eval(recv, opt); } + local_vars = ruby_scope->local_vars; if (node->nd_rest >= 0) { + VALUE v; + if (argc > 0) - local_vars[node->nd_rest]=rb_ary_new4(argc,argv); + v = rb_ary_new4(argc,argv); else - local_vars[node->nd_rest]=rb_ary_new2(0); + v = rb_ary_new2(0); + ruby_scope->local_vars[node->nd_rest] = v; } } } |