1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* parse.y (dyna_var_lookup): should not alter dvar->val not to

destroy living value.  [ruby-core:10076]

* parse.y (dyna_init): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@11582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2007-01-27 14:25:02 +00:00
parent 0f886f2f24
commit e43d14725f
4 changed files with 14 additions and 6 deletions

View file

@ -1,3 +1,10 @@
Sat Jan 27 15:20:11 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
* parse.y (dyna_var_lookup): should not alter dvar->val not to
destroy living value. [ruby-core:10076]
* parse.y (dyna_init): ditto.
Fri Jan 26 12:03:39 2007 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp> Fri Jan 26 12:03:39 2007 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk.rb (TkConfigMethod#__confinfo_cmd, * ext/tk/lib/tk.rb (TkConfigMethod#__confinfo_cmd,

1
eval.c
View file

@ -5621,7 +5621,6 @@ method_missing(obj, id, argc, argv, call_status)
MEMCPY(nargv+1, argv, VALUE, argc); MEMCPY(nargv+1, argv, VALUE, argc);
MEMCPY(nargv+1+argc, RARRAY(tmp)->ptr, VALUE, RARRAY(tmp)->len); MEMCPY(nargv+1+argc, RARRAY(tmp)->ptr, VALUE, RARRAY(tmp)->len);
argc += RARRAY(tmp)->len; argc += RARRAY(tmp)->len;
} }
else { else {
nargv = ALLOCA_N(VALUE, argc+1); nargv = ALLOCA_N(VALUE, argc+1);

View file

@ -5733,6 +5733,8 @@ top_local_setup()
local_pop(); local_pop();
} }
#define DVAR_USED FL_USER6
static VALUE static VALUE
dyna_var_lookup(id) dyna_var_lookup(id)
ID id; ID id;
@ -5741,7 +5743,7 @@ dyna_var_lookup(id)
while (vars) { while (vars) {
if (vars->id == id) { if (vars->id == id) {
vars->val = Qtrue; FL_SET(vars, DVAR_USED);
return Qtrue; return Qtrue;
} }
vars = vars->next; vars = vars->next;
@ -5783,7 +5785,7 @@ dyna_init(node, pre)
if (!node || !post || pre == post) return node; if (!node || !post || pre == post) return node;
for (var = 0; post != pre && post->id; post = post->next) { for (var = 0; post != pre && post->id; post = post->next) {
if (RTEST(post->val)) { if (FL_TEST(post, DVAR_USED)) {
var = NEW_DASGN_CURR(post->id, var); var = NEW_DASGN_CURR(post->id, var);
} }
} }

View file

@ -1,7 +1,7 @@
#define RUBY_VERSION "1.8.5" #define RUBY_VERSION "1.8.5"
#define RUBY_RELEASE_DATE "2007-01-26" #define RUBY_RELEASE_DATE "2007-01-27"
#define RUBY_VERSION_CODE 185 #define RUBY_VERSION_CODE 185
#define RUBY_RELEASE_CODE 20070126 #define RUBY_RELEASE_CODE 20070127
#define RUBY_PATCHLEVEL 5000 #define RUBY_PATCHLEVEL 5000
#define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MAJOR 1
@ -9,7 +9,7 @@
#define RUBY_VERSION_TEENY 5 #define RUBY_VERSION_TEENY 5
#define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_YEAR 2007
#define RUBY_RELEASE_MONTH 1 #define RUBY_RELEASE_MONTH 1
#define RUBY_RELEASE_DAY 26 #define RUBY_RELEASE_DAY 27
RUBY_EXTERN const char ruby_version[]; RUBY_EXTERN const char ruby_version[];
RUBY_EXTERN const char ruby_release_date[]; RUBY_EXTERN const char ruby_release_date[];