]> granicus.if.org Git - python/commitdiff
Py_UniversalNewlineFread(): small speed boost on non-Windows boxes.
authorTim Peters <tim.peters@gmail.com>
Sun, 21 Apr 2002 18:15:20 +0000 (18:15 +0000)
committerTim Peters <tim.peters@gmail.com>
Sun, 21 Apr 2002 18:15:20 +0000 (18:15 +0000)
Objects/fileobject.c

index 044dfd89e2bc18a80ea5188e8c61c43b1287cb1f..3dd10348b725e4c3f652b7e185be209952eeb049 100644 (file)
@@ -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;
                        }
                }