From e43d14725ff8dab7210988c1201779666fb4aa96 Mon Sep 17 00:00:00 2001 From: matz Date: Sat, 27 Jan 2007 14:25:02 +0000 Subject: [PATCH] * 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 --- ChangeLog | 7 +++++++ eval.c | 1 - parse.y | 6 ++++-- version.h | 6 +++--- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9a523893f1..d5efe21723 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Sat Jan 27 15:20:11 2007 Yukihiro Matsumoto + + * 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 * ext/tk/lib/tk.rb (TkConfigMethod#__confinfo_cmd, diff --git a/eval.c b/eval.c index dff4dc1c75..a1ca159588 100644 --- a/eval.c +++ b/eval.c @@ -5621,7 +5621,6 @@ method_missing(obj, id, argc, argv, call_status) MEMCPY(nargv+1, argv, VALUE, argc); MEMCPY(nargv+1+argc, RARRAY(tmp)->ptr, VALUE, RARRAY(tmp)->len); argc += RARRAY(tmp)->len; - } else { nargv = ALLOCA_N(VALUE, argc+1); diff --git a/parse.y b/parse.y index 1131801269..d1a4d65829 100644 --- a/parse.y +++ b/parse.y @@ -5733,6 +5733,8 @@ top_local_setup() local_pop(); } +#define DVAR_USED FL_USER6 + static VALUE dyna_var_lookup(id) ID id; @@ -5741,7 +5743,7 @@ dyna_var_lookup(id) while (vars) { if (vars->id == id) { - vars->val = Qtrue; + FL_SET(vars, DVAR_USED); return Qtrue; } vars = vars->next; @@ -5783,7 +5785,7 @@ dyna_init(node, pre) if (!node || !post || pre == post) return node; 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); } } diff --git a/version.h b/version.h index d3dcdd55b8..d29365c130 100644 --- a/version.h +++ b/version.h @@ -1,7 +1,7 @@ #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_RELEASE_CODE 20070126 +#define RUBY_RELEASE_CODE 20070127 #define RUBY_PATCHLEVEL 5000 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 5 #define RUBY_RELEASE_YEAR 2007 #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_release_date[];