зеркало из https://github.com/github/ruby.git
proc.c: fix infinite loop
* proc.c (bind_local_variables): update env from envval for each iterations. [ruby-dev:48351] [Bug #10001] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46645 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
bc1fafaea3
Коммит
02c391a1c9
|
@ -1,3 +1,8 @@
|
|||
Wed Jul 2 02:14:37 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* proc.c (bind_local_variables): update env from envval for each
|
||||
iterations. [ruby-dev:48351] [Bug #10001]
|
||||
|
||||
Tue Jul 1 23:46:34 2014 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||
|
||||
* NEWS: [DOC] mention about Binding#local_variables, introduced at
|
||||
|
|
3
proc.c
3
proc.c
|
@ -476,12 +476,13 @@ bind_local_variables(VALUE bindval)
|
|||
GetBindingPtr(bindval, bind);
|
||||
|
||||
envval = bind->env;
|
||||
GetEnvPtr(envval, env);
|
||||
|
||||
do {
|
||||
const rb_iseq_t *iseq;
|
||||
int i;
|
||||
ID id;
|
||||
|
||||
GetEnvPtr(envval, env);
|
||||
iseq = env->block.iseq;
|
||||
|
||||
for (i = 0; i < iseq->local_table_size; i++) {
|
||||
|
|
|
@ -1256,6 +1256,11 @@ class TestProc < Test::Unit::TestCase
|
|||
assert_equal(%i[if case when begin end a], b.local_variables)
|
||||
end
|
||||
|
||||
def test_local_variables_nested
|
||||
b = tap {break binding}
|
||||
assert_equal(%i[b], b.local_variables, '[ruby-dev:48351] [Bug #10001]')
|
||||
end
|
||||
|
||||
def local_variables_of(bind)
|
||||
this_should_not_be_in_bind = 2
|
||||
bind.local_variables
|
||||
|
|
Загрузка…
Ссылка в новой задаче