diff options
Diffstat (limited to 'Modules/faulthandler.c')
-rw-r--r-- | Modules/faulthandler.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Modules/faulthandler.c b/Modules/faulthandler.c index 469e490..4aa9124 100644 --- a/Modules/faulthandler.c +++ b/Modules/faulthandler.c @@ -659,17 +659,22 @@ faulthandler_user(int signum) #ifdef HAVE_SIGACTION if (user->chain) { (void)sigaction(signum, &user->previous, NULL); + errno = save_errno; + /* call the previous signal handler */ raise(signum); + + save_errno = errno; (void)faulthandler_register(signum, user->chain, NULL); + errno = save_errno; } #else if (user->chain) { + errno = save_errno; /* call the previous signal handler */ user->previous(signum); } #endif - errno = save_errno; } static int |