[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]