summaryrefslogtreecommitdiffstats
path: root/Objects/fileobject.c
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2003-02-09 01:10:02 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2003-02-09 01:10:02 (GMT)
commitcb3319f61e94af8794a51f51730dce4a9d512af3 (patch)
treeea4a3d6028434b0c0e013dfe7ad55438c181369e /Objects/fileobject.c
parentdf1252dec9de0ffd20531ad58d7b0957681d8604 (diff)
downloadcpython-cb3319f61e94af8794a51f51730dce4a9d512af3.zip
cpython-cb3319f61e94af8794a51f51730dce4a9d512af3.tar.gz
cpython-cb3319f61e94af8794a51f51730dce4a9d512af3.tar.bz2
SF patch #683187, fix universal newline problems on error
Diffstat (limited to 'Objects/fileobject.c')
-rw-r--r--Objects/fileobject.c5
1 files changed, 4 insertions, 1 deletions
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 @@ Py_UniversalNewlineFread(char *buf, size_t n,
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 @@ Py_UniversalNewlineFread(char *buf, size_t n,
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--) {