Issue #10350: Read and save errno before calling a function which might overwrite it.
Original patch by Hallvard B Furuseth.
diff --git a/Parser/myreadline.c b/Parser/myreadline.c
index fb4b805..33d5b3d 100644
--- a/Parser/myreadline.c
+++ b/Parser/myreadline.c
@@ -36,6 +36,7 @@
 my_fgets(char *buf, int len, FILE *fp)
 {
     char *p;
+    int err;
     while (1) {
         if (PyOS_InputHook != NULL)
             (void)(PyOS_InputHook)();
@@ -44,6 +45,7 @@
         p = fgets(buf, len, fp);
         if (p != NULL)
             return 0; /* No error */
+        err = errno;
 #ifdef MS_WINDOWS
         /* In the case of a Ctrl+C or some other external event
            interrupting the operation:
@@ -78,7 +80,7 @@
             return -1; /* EOF */
         }
 #ifdef EINTR
-        if (errno == EINTR) {
+        if (err == EINTR) {
             int s;
 #ifdef WITH_THREAD
             PyEval_RestoreThread(_PyOS_ReadlineTState);