]> granicus.if.org Git - python/commitdiff
faulthandler: save/restore errno in the two signal handlers
authorVictor Stinner <victor.stinner@haypocalc.com>
Sat, 7 May 2011 10:20:11 +0000 (12:20 +0200)
committerVictor Stinner <victor.stinner@haypocalc.com>
Sat, 7 May 2011 10:20:11 +0000 (12:20 +0200)
Modules/faulthandler.c

index 48c43912cecc8bf9a5cdc2d215df0075249844e8..8f83ab8e41bccc03c96f8193bead2d5371e9ff7c 100644 (file)
@@ -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