зеркало из https://github.com/github/ruby.git
* eval.c (block_pass): return from block jumps directory to
block invoker. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1154 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
2f0faf671d
Коммит
35e5ddf6cf
|
@ -1,3 +1,8 @@
|
|||
Mon Jan 29 14:25:39 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* eval.c (block_pass): return from block jumps directory to
|
||||
block invoker.
|
||||
|
||||
Mon Jan 29 01:40:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* string.c (str_independent): should not clear str->orig here.
|
||||
|
|
16
eval.c
16
eval.c
|
@ -6333,8 +6333,24 @@ block_pass(self, node)
|
|||
POP_TAG();
|
||||
POP_ITER();
|
||||
if (_block.tag->dst == state) {
|
||||
if (orphan) {
|
||||
state &= TAG_MASK;
|
||||
}
|
||||
else {
|
||||
struct BLOCK *ptr = old_block;
|
||||
|
||||
while (ptr) {
|
||||
if (ptr->scope == _block.scope) {
|
||||
ptr->tag->dst = state;
|
||||
break;
|
||||
}
|
||||
ptr = ptr->prev;
|
||||
}
|
||||
if (!ptr) {
|
||||
state &= TAG_MASK;
|
||||
}
|
||||
}
|
||||
}
|
||||
ruby_block = old_block;
|
||||
ruby_safe_level = safe;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче