diff options
| author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-08-31 09:08:14 +0000 |
|---|---|---|
| committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-08-31 09:08:14 +0000 |
| commit | be37634ffbc46ce3d839b94989be644720fed517 (patch) | |
| tree | f005d9bc7449c28452d80a6fc624b05a8d6af740 /eval.c | |
| parent | 5675f4a11c4e744c91004b7ae5ec7cb19042ee5e (diff) | |
| download | ruby-be37634ffbc46ce3d839b94989be644720fed517.tar.gz ruby-be37634ffbc46ce3d839b94989be644720fed517.tar.xz ruby-be37634ffbc46ce3d839b94989be644720fed517.zip | |
matz
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@921 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
| -rw-r--r-- | eval.c | 24 |
1 files changed, 11 insertions, 13 deletions
@@ -805,10 +805,8 @@ static rb_thread_t curr_thread = 0; if (ruby_scope != top_scope)\ rb_gc_force_recycle((VALUE)ruby_scope);\ } \ - else { \ - ruby_scope->flag |= SCOPE_NOSTACK;\ - } \ } \ + ruby_scope->flag |= SCOPE_NOSTACK; \ ruby_scope = _old; \ scope_vmode = _vmode; \ } @@ -5687,17 +5685,17 @@ scope_dup(scope) ID *tbl; VALUE *vars; - scope->flag |= SCOPE_DONT_RECYCLE; - if (scope->flag & SCOPE_MALLOC) return; - - if (scope->local_tbl) { - tbl = scope->local_tbl; - vars = ALLOC_N(VALUE, tbl[0]+1); - *vars++ = scope->local_vars[-1]; - MEMCPY(vars, scope->local_vars, VALUE, tbl[0]); - scope->local_vars = vars; - scope->flag = SCOPE_MALLOC; + if (!(scope->flag & SCOPE_MALLOC)) { + if (scope->local_tbl) { + tbl = scope->local_tbl; + vars = ALLOC_N(VALUE, tbl[0]+1); + *vars++ = scope->local_vars[-1]; + MEMCPY(vars, scope->local_vars, VALUE, tbl[0]); + scope->local_vars = vars; + scope->flag = SCOPE_MALLOC; + } } + scope->flag |= SCOPE_DONT_RECYCLE; } static void |
