diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2011-05-07 10:20:11 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2011-05-07 10:20:11 (GMT) |
commit | c925617b5455867b7b393c6ca66f133aab450a6b (patch) | |
tree | c72364f1c7acfd0768234a86e3bed10fc1bed5e6 /Modules | |
parent | 97c3eb4ed5a66e632972f8b958395da93ad57369 (diff) | |
download | cpython-c925617b5455867b7b393c6ca66f133aab450a6b.zip cpython-c925617b5455867b7b393c6ca66f133aab450a6b.tar.gz cpython-c925617b5455867b7b393c6ca66f133aab450a6b.tar.bz2 |
faulthandler: save/restore errno in the two signal handlers
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/faulthandler.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Modules/faulthandler.c b/Modules/faulthandler.c index 48c4391..8f83ab8 100644 --- a/Modules/faulthandler.c +++ b/Modules/faulthandler.c @@ -238,6 +238,7 @@ faulthandler_fatal_error(int signum) unsigned int i; fault_handler_t *handler = NULL; PyThreadState *tstate; + int save_errno = errno; if (!fatal_error.enabled) return; @@ -285,6 +286,7 @@ faulthandler_fatal_error(int signum) _Py_DumpTraceback(fd, tstate); } + errno = save_errno; #ifdef MS_WINDOWS if (signum == SIGSEGV) { /* don't call explictly the previous handler for SIGSEGV in this signal @@ -593,6 +595,7 @@ faulthandler_user(int signum) { user_signal_t *user; PyThreadState *tstate; + int save_errno = errno; user = &user_signals[signum]; if (!user->enabled) @@ -614,6 +617,7 @@ faulthandler_user(int signum) return; _Py_DumpTraceback(user->fd, tstate); } + errno = save_errno; } static int |