aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--eval_error.c6
2 files changed, 8 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 845906fbb2..93df674e9f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,7 @@
-Tue May 27 21:53:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue May 27 22:10:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.c (error_handle): SystemExit and SignalException throws
+ TAG_RAISE but not TAG_FATAL.
* thread.c (rb_thread_execute_interrupts): delay interrupts during
raising exceptions. [ruby-dev:34855]
diff --git a/eval_error.c b/eval_error.c
index aae7655be2..d22b865e19 100644
--- a/eval_error.c
+++ b/eval_error.c
@@ -247,8 +247,7 @@ error_handle(int ex)
error_pos();
warn_printf(": unexpected throw\n");
break;
- case TAG_RAISE:
- case TAG_FATAL: {
+ case TAG_RAISE: {
VALUE errinfo = GET_THREAD()->errinfo;
if (rb_obj_is_kind_of(errinfo, rb_eSystemExit)) {
status = sysexit_status(errinfo);
@@ -261,6 +260,9 @@ error_handle(int ex)
}
break;
}
+ case TAG_FATAL:
+ error_print();
+ break;
default:
rb_bug("Unknown longjmp status %d", ex);
break;