Mark pointed out a buglet in his patch: i < _sys_nerr isn't strong
enough, it could be negative.  Add i > 0 test.  (Not i >= 0; zero isn't
a valid error number.)
diff --git a/Python/errors.c b/Python/errors.c
index 71e51c3..b3e1910 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -308,7 +308,7 @@
 		   table, we use it, otherwise we assume it really _is_ 
 		   a Win32 error code
 		*/
-		if (i < _sys_nerr) {
+		if (i > 0 && i < _sys_nerr) {
 			s = _sys_errlist[i];
 		}
 		else {