* 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:
parent
2f0faf671d
commit
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>
|
Mon Jan 29 01:40:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
* string.c (str_independent): should not clear str->orig here.
|
* string.c (str_independent): should not clear str->orig here.
|
||||||
|
18
eval.c
18
eval.c
@ -6333,7 +6333,23 @@ block_pass(self, node)
|
|||||||
POP_TAG();
|
POP_TAG();
|
||||||
POP_ITER();
|
POP_ITER();
|
||||||
if (_block.tag->dst == state) {
|
if (_block.tag->dst == state) {
|
||||||
state &= TAG_MASK;
|
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_block = old_block;
|
||||||
ruby_safe_level = safe;
|
ruby_safe_level = safe;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user