From 1af83e49971e5ca5fa1b0c80a12e7b34d9271cac Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 24 Jan 2000 03:46:14 +0000 Subject: 2000-01-24 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_4@610 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 3a684b484c..88ec197f96 100644 --- a/eval.c +++ b/eval.c @@ -556,14 +556,27 @@ dvar_asgn(id, value, push) struct RVarmap *vars = ruby_dyna_vars; while (vars) { - if (push && vars->id == 0) break; + if (push && vars->id == 0) { + rb_dvar_push(id, value); + return; + } if (vars->id == id) { vars->val = value; return; } vars = vars->next; } + + vars = 0; + if (ruby_dyna_vars && ruby_dyna_vars->id == 0) { + vars = ruby_dyna_vars; + ruby_dyna_vars = ruby_dyna_vars->next; + } rb_dvar_push(id, value); + if (vars) { + vars->next = ruby_dyna_vars; + ruby_dyna_vars = vars; + } } void -- cgit v1.2.3