diff options
Diffstat (limited to 'eval_error.h')
-rw-r--r-- | eval_error.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/eval_error.h b/eval_error.h index 38e85a1d38..155986e836 100644 --- a/eval_error.h +++ b/eval_error.h @@ -233,14 +233,19 @@ error_handle(int ex) warn_printf(": unexpected throw\n"); break; case TAG_RAISE: - case TAG_FATAL: - if (rb_obj_is_kind_of(GET_THREAD()->errinfo, rb_eSystemExit)) { - status = sysexit_status(GET_THREAD()->errinfo); + case TAG_FATAL: { + VALUE errinfo = GET_THREAD()->errinfo; + if (rb_obj_is_kind_of(errinfo, rb_eSystemExit)) { + status = sysexit_status(errinfo); + } + else if (rb_obj_is_instance_of(errinfo, rb_eSignal)) { + /* no message when exiting by signal */ } else { error_print(); } break; + } default: rb_bug("Unknown longjmp status %d", ex); break; |