faulthandler: fix the handler of user signals

Restore the errno before calling the previous signal handler, and not after.
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 @@
 #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