Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e1682a8

Browse files
committed
Py_UniversalNewlineFread(): small speed boost on non-Windows boxes.
1 parent 0eca65c commit e1682a8

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

Objects/fileobject.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2052,19 +2052,20 @@ Py_UniversalNewlineFread(char *buf, size_t n,
20522052

20532053
nread = fread(dst, 1, n, stream);
20542054
assert(nread <= n);
2055-
shortread = nread != n; /* true iff EOF or error */
2055+
n -= nread; /* assuming 1 byte out for each in; will adjust */
2056+
shortread = n != 0; /* true iff EOF or error */
20562057
while (nread--) {
20572058
char c = *src++;
20582059
if (c == '\r') {
20592060
/* Save as LF and set flag to skip next LF. */
20602061
*dst++ = '\n';
2061-
--n;
20622062
skipnextlf = 1;
20632063
}
20642064
else if (skipnextlf && c == '\n') {
20652065
/* Skip LF, and remember we saw CR LF. */
20662066
skipnextlf = 0;
20672067
newlinetypes |= NEWLINE_CRLF;
2068+
++n;
20682069
}
20692070
else {
20702071
/* Normal char to be stored in buffer. Also
@@ -2076,7 +2077,6 @@ Py_UniversalNewlineFread(char *buf, size_t n,
20762077
else if (skipnextlf)
20772078
newlinetypes |= NEWLINE_CR;
20782079
*dst++ = c;
2079-
--n;
20802080
skipnextlf = 0;
20812081
}
20822082
}

0 commit comments

Comments
 (0)