diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | eval.c | 6 |
2 files changed, 5 insertions, 4 deletions
@@ -1,5 +1,8 @@ Sat Jun 21 23:15:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org> + * eval.c (proc_invoke): should not propagate distination tag if + tag is already handled in this level. (ruby-bugs-ja PR#501) + * object.c (str_to_id): check for empty string before intern. [ruby-talk:74006] @@ -7000,13 +7000,11 @@ proc_invoke(proc, args, self, klass) state == TAG_BREAK ? "break" : "return"); localjump_error(mesg, prot_tag->retval, state); } - else { + else if (state == incoming_state) { ruby_block->tag->dst = incoming_state; - JUMP_TAG(incoming_state); } - break; default: - JUMP_TAG(incoming_state); + JUMP_TAG(state); } return result; } |