* 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:
matz 2001-01-29 06:12:56 +00:00
Родитель 2f0faf671d
Коммит 35e5ddf6cf
2 изменённых файлов: 22 добавлений и 1 удалений

Просмотреть файл

@ -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
Просмотреть файл

@ -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;