From: Tim Peters Date: Sun, 21 Apr 2002 18:15:20 +0000 (+0000) Subject: Py_UniversalNewlineFread(): small speed boost on non-Windows boxes. X-Git-Tag: v2.3c1~5850 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e1682a80fa3a664715367bc09f467eb1bd1ce537;p=python Py_UniversalNewlineFread(): small speed boost on non-Windows boxes. --- diff --git a/Objects/fileobject.c b/Objects/fileobject.c index 044dfd89e2..3dd10348b7 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -2052,19 +2052,20 @@ Py_UniversalNewlineFread(char *buf, size_t n, nread = fread(dst, 1, n, stream); assert(nread <= n); - shortread = nread != n; /* true iff EOF or error */ + n -= nread; /* assuming 1 byte out for each in; will adjust */ + shortread = n != 0; /* true iff EOF or error */ while (nread--) { char c = *src++; if (c == '\r') { /* Save as LF and set flag to skip next LF. */ *dst++ = '\n'; - --n; skipnextlf = 1; } else if (skipnextlf && c == '\n') { /* Skip LF, and remember we saw CR LF. */ skipnextlf = 0; newlinetypes |= NEWLINE_CRLF; + ++n; } else { /* Normal char to be stored in buffer. Also @@ -2076,7 +2077,6 @@ Py_UniversalNewlineFread(char *buf, size_t n, else if (skipnextlf) newlinetypes |= NEWLINE_CR; *dst++ = c; - --n; skipnextlf = 0; } }