http://bugs.python.org/issue5544
Fix to the last checkin, correctly raise an exception on failure.
diff --git a/Modules/_fileio.c b/Modules/_fileio.c
index 0006561..cc1cbef 100644
--- a/Modules/_fileio.c
+++ b/Modules/_fileio.c
@@ -84,8 +84,10 @@
 			if (err < 0)
 				save_errno = errno;
 			Py_END_ALLOW_THREADS
-		} else
-		save_errno = errno;
+		} else {
+			save_errno = errno;
+			err = -1;
+		}
 	}
 	if (err < 0) {
 		errno = save_errno;