ruby-changes:12685
From: nobu <ko1@a...>
Date: Wed, 5 Aug 2009 12:37:03 +0900 (JST)
Subject: [ruby-changes:12685] Ruby:r24400 (ruby_1_8): * eval.c (rb_eval): not discard fatal error.
nobu 2009-08-05 12:36:46 +0900 (Wed, 05 Aug 2009) New Revision: 24400 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24400 Log: * eval.c (rb_eval): not discard fatal error. * eval.c (rb_longjmp): reset raised flag before fatal error. Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/eval.c Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 24399) +++ ruby_1_8/ChangeLog (revision 24400) @@ -1,3 +1,9 @@ +Wed Aug 5 12:36:38 2009 Nobuyoshi Nakada <nobu@r...> + + * eval.c (rb_eval): not discard fatal error. + + * eval.c (rb_longjmp): reset raised flag before fatal error. + Wed Aug 5 00:31:42 2009 Nobuyoshi Nakada <nobu@r...> * lib/rdoc/parsers/parse_c.rb: fixed a small error in the Index: ruby_1_8/eval.c =================================================================== --- ruby_1_8/eval.c (revision 24399) +++ ruby_1_8/eval.c (revision 24400) @@ -1291,10 +1291,12 @@ if (EXEC_TAG()) goto error; if (NIL_P(errat)){ ruby_set_current_source(); - if (ruby_sourcefile) + if (!ruby_sourcefile) + warn_printf("%d", ruby_sourceline); + else if (!ruby_sourceline) + warn_printf("%s", ruby_sourcefile); + else warn_printf("%s:%d", ruby_sourcefile, ruby_sourceline); - else - warn_printf("%d", ruby_sourceline); } else if (RARRAY(errat)->len == 0) { error_pos(); @@ -3411,8 +3413,11 @@ result = prot_tag->retval; } POP_TAG(); - if (state != TAG_RAISE) ruby_errinfo = e_info; - if (state) { + switch (state) { + case 0: break; + default: + ruby_errinfo = e_info; + case TAG_RAISE: case TAG_FATAL: JUMP_TAG(state); } /* no exception raised */ @@ -4658,6 +4663,7 @@ if (rb_thread_set_raised(th)) { ruby_errinfo = exception_error; + rb_thread_reset_raised(th); JUMP_TAG(TAG_FATAL); } if (NIL_P(mesg)) mesg = ruby_errinfo; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/