diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | eval.c | 7 |
2 files changed, 5 insertions, 6 deletions
@@ -1,6 +1,6 @@ -Wed Aug 5 12:36:38 2009 Nobuyoshi Nakada <[email protected]> +Wed Aug 5 12:46:48 2009 Nobuyoshi Nakada <[email protected]> - * eval.c (rb_eval): not discard fatal error. + * eval.c (rb_eval): does not restore old errinfo when fatal error. * eval.c (rb_longjmp): reset raised flag before fatal error. @@ -3413,11 +3413,10 @@ rb_eval(self, n) result = prot_tag->retval; } POP_TAG(); - switch (state) { - case 0: break; - default: + if (state != TAG_RAISE && state != TAG_FATAL) { ruby_errinfo = e_info; - case TAG_RAISE: case TAG_FATAL: + } + if (state) { JUMP_TAG(state); } /* no exception raised */ |