summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-01-27 15:44:44 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-01-27 15:44:44 +0000
commit1f77ea8214fe9cc02e53fcb59b2de0ea88a436d8 (patch)
tree390527adc578a887f56996cab54a1a4270196267
parent3728b21d53bcd9309aff9494c0789367cab319e9 (diff)
* 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_5@11583 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog7
-rw-r--r--eval.c1
-rw-r--r--parse.y6
-rw-r--r--version.h8
4 files changed, 15 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index a7adc5881b..512e4daea0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
+
Wed Jan 24 18:05:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
* misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): fix
diff --git a/eval.c b/eval.c
index afb528d59a..37e07fa871 100644
--- a/eval.c
+++ b/eval.c
@@ -5624,7 +5624,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 14561ca185..058f4486bf 100644
--- a/parse.y
+++ b/parse.y
@@ -5738,6 +5738,8 @@ top_local_setup()
local_pop();
}
+#define DVAR_USED FL_USER6
+
static VALUE
dyna_var_lookup(id)
ID id;
@@ -5746,7 +5748,7 @@ dyna_var_lookup(id)
while (vars) {
if (vars->id == id) {
- vars->val = Qtrue;
+ FL_SET(vars, DVAR_USED);
return Qtrue;
}
vars = vars->next;
@@ -5788,7 +5790,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 67db66c2f7..3e5ac0340e 100644
--- a/version.h
+++ b/version.h
@@ -1,15 +1,15 @@
#define RUBY_VERSION "1.8.5"
-#define RUBY_RELEASE_DATE "2007-01-24"
+#define RUBY_RELEASE_DATE "2007-01-27"
#define RUBY_VERSION_CODE 185
-#define RUBY_RELEASE_CODE 20070124
-#define RUBY_PATCHLEVEL 16
+#define RUBY_RELEASE_CODE 20070127
+#define RUBY_PATCHLEVEL 17
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8
#define RUBY_VERSION_TEENY 5
#define RUBY_RELEASE_YEAR 2007
#define RUBY_RELEASE_MONTH 1
-#define RUBY_RELEASE_DAY 24
+#define RUBY_RELEASE_DAY 27
RUBY_EXTERN const char ruby_version[];
RUBY_EXTERN const char ruby_release_date[];