Reset errno to zero after calling PyErr_Warn().  It can potentially do
a lot of work, including I/O (e.g. to import warnings.py), which might
affect errno.
diff --git a/Python/compile.c b/Python/compile.c
index e547e03..dbff9b0 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1162,6 +1162,7 @@
 				       "will return positive values "
 				       "in Python 2.4 and up") < 0)
 				return NULL;
+			errno = 0; /* Might be changed by PyErr_Warn() */
 		}
 	}
 	else