Skip to content

Commit

Permalink
backport from ruby_1_8
Browse files Browse the repository at this point in the history
* parse.y (dyna_init_gen): dvar initialization only if dvar is
  assigned inner block.  [ruby-talk:227402]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_5@11356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
shyouhei committed Dec 6, 2006
1 parent 2aee0d5 commit a472da8
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
@@ -1,3 +1,8 @@
Mon Dec 4 10:43:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>

* parse.y (dyna_init_gen): dvar initialization only if dvar is
assigned inner block. [ruby-talk:227402]

Mon Dec 4 10:22:26 2006 URABE Shyouhei <shyouhei@ice.uec.ac.jp>

* stable version 1.8.5-p2 relased.
Expand Down
24 changes: 22 additions & 2 deletions parse.y
Expand Up @@ -4866,6 +4866,8 @@ gettable(id)
return 0;
}

static VALUE dyna_var_lookup _((ID id));

static NODE*
assignable(id, val)
ID id;
Expand Down Expand Up @@ -4894,7 +4896,7 @@ assignable(id, val)
if (rb_dvar_curr(id)) {
return NEW_DASGN_CURR(id, val);
}
else if (rb_dvar_defined(id)) {
else if (dyna_var_lookup(id)) {
return NEW_DASGN(id, val);
}
else if (local_id(id) || !dyna_in_block()) {
Expand Down Expand Up @@ -5736,6 +5738,22 @@ top_local_setup()
local_pop();
}

static VALUE
dyna_var_lookup(id)
ID id;
{
struct RVarmap *vars = ruby_dyna_vars;

while (vars) {
if (vars->id == id) {
vars->val = Qtrue;
return Qtrue;
}
vars = vars->next;
}
return Qfalse;
}

static struct RVarmap*
dyna_push()
{
Expand Down Expand Up @@ -5770,7 +5788,9 @@ dyna_init(node, pre)

if (!node || !post || pre == post) return node;
for (var = 0; post != pre && post->id; post = post->next) {
var = NEW_DASGN_CURR(post->id, var);
if (RTEST(post->val)) {
var = NEW_DASGN_CURR(post->id, var);
}
}
return block_append(var, node);
}
Expand Down
2 changes: 1 addition & 1 deletion version.h
Expand Up @@ -2,7 +2,7 @@
#define RUBY_RELEASE_DATE "2006-12-06"
#define RUBY_VERSION_CODE 185
#define RUBY_RELEASE_CODE 20061206
#define RUBY_PATCHLEVEL 6
#define RUBY_PATCHLEVEL 7

#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8
Expand Down

0 comments on commit a472da8

Please sign in to comment.