From: Victor Stinner Date: Sat, 7 May 2011 10:20:11 +0000 (+0200) Subject: faulthandler: save/restore errno in the two signal handlers X-Git-Tag: v3.3.0a1~2380 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c925617b5455867b7b393c6ca66f133aab450a6b;p=python faulthandler: save/restore errno in the two signal handlers --- diff --git a/Modules/faulthandler.c b/Modules/faulthandler.c index 48c43912ce..8f83ab8e41 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