SF patch #683187, fix universal newline problems on error
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index fb8ec90..5b2267b 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -2278,7 +2278,7 @@
 
 	if (!fobj || !PyFile_Check(fobj)) {
 		errno = ENXIO;	/* What can you do... */
-		return -1;
+		return 0;
 	}
 	if (!f->f_univ_newline)
 		return fread(buf, 1, n, stream);
@@ -2294,6 +2294,9 @@
 
 		nread = fread(dst, 1, n, stream);
 		assert(nread <= n);
+		if (nread == 0)
+			break;
+
 		n -= nread; /* assuming 1 byte out for each in; will adjust */
 		shortread = n != 0;	/* true iff EOF or error */
 		while (nread--) {