aboutsummaryrefslogtreecommitdiffstats
path: root/g10/signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/signal.c')
-rw-r--r--g10/signal.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/g10/signal.c b/g10/signal.c
index 6ed23e5a0..ea837c3e7 100644
--- a/g10/signal.c
+++ b/g10/signal.c
@@ -53,20 +53,26 @@ static RETSIGTYPE
got_fatal_signal( int sig )
{
const char *s;
+ struct sigaction nact;
if( caught_fatal_sig )
raise( sig );
caught_fatal_sig = 1;
secmem_term();
- #ifdef IS_DEVELOPMENT_VERSION
+ /* better don't transtale these messages */
write(2, "\n", 1 );
s = log_get_name(); if( s ) write(2, s, strlen(s) );
write(2, ": ", 2 );
s = get_signal_name(sig); write(2, s, strlen(s) );
write(2, " caught ... exiting\n", 21 );
- #endif
- exit(8); /* Hmmm, for some reasons rais2e does not work */
+
+ /* reset action to default action and raise signal again */
+ nact.sa_handler = SIG_DFL;
+ sigemptyset( &nact.sa_mask );
+ nact.sa_flags = 0;
+ sigaction( sig, &nact, NULL);
+ raise( sig );
}