From fe32f825f2efc2c5629048f6b1db8ec094f9a1c8 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 19 Apr 2007 17:37:03 +0000 Subject: * eval.c (ruby_cleanup): re-send signal. [ruby-dev:30516] * eval_error.h (error_handle): no message when exiting by signal. * intern.h (rb_thread_signal_raise, ruby_default_signal): prototypes. * signal.c (esignal_init): takes a signal number and an optional signal name. * signal.c (interrupt_init): pass SIGINT always. * signal.c (ruby_default_signal): invoke system default signal handler. * signal.c (rb_f_kill): use NUM2PIDT instead of NUM2INT. * signal.c (rb_signal_exec, trap): handle SIGTERM. [ruby-dev:30505] * thread.c (rb_thread_signal_raise): now takes signal number instead of signal name. * thread.c (rb_thread_signal_exit): since rb_make_exception() calls #exception method, rb_class_new_instance() is not needed here. * yarvcore.h (struct rb_vm_struct), eval_jump.h (terminate_process): exit_code is no longer stored in VM. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@12199 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval_error.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'eval_error.h') diff --git a/eval_error.h b/eval_error.h index 38e85a1d3..155986e83 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; -- cgit