Author: Matti Picus <matti.pi...@gmail.com> Branch: Changeset: r96572:436eebe7adb1 Date: 2019-05-06 21:52 -0400 http://bitbucket.org/pypy/pypy/changeset/436eebe7adb1/
Log: fix for issue #3012, if no \r no need to translate diff --git a/pypy/module/_io/interp_textio.py b/pypy/module/_io/interp_textio.py --- a/pypy/module/_io/interp_textio.py +++ b/pypy/module/_io/interp_textio.py @@ -105,16 +105,10 @@ # desired, all in one pass. seennl = self.seennl - # If, up to now, newlines are consistently \n, do a quick check - # for the \r - only_lf = False - if seennl == SEEN_LF or seennl == 0: - only_lf = (output.find('\r') < 0) - - if only_lf: - # If not already seen, quick scan for a possible "\n" character. + if output.find('\r') < 0: + # If no \r, quick scan for a possible "\n" character. # (there's nothing else to be done, even when in translation mode) - if seennl == 0 and output.find('\n') >= 0: + if output.find('\n') >= 0: seennl |= SEEN_LF # Finished: we have scanned for newlines, and none of them # need translating. diff --git a/pypy/module/_io/test/test_textio.py b/pypy/module/_io/test/test_textio.py --- a/pypy/module/_io/test/test_textio.py +++ b/pypy/module/_io/test/test_textio.py @@ -377,3 +377,13 @@ _check(dec) dec = _io.IncrementalNewlineDecoder(None, translate=True) _check(dec) + + def test_newlines2(self): + import _io, codecs + inner_decoder = codecs.getincrementaldecoder("utf-8")() + decoder = _io.IncrementalNewlineDecoder(inner_decoder, translate=True) + msg = b"abc\r\n\n\r\r\n\n" + decoded = '' + for ch in msg: + decoded += decoder.decode(ch) + assert set(decoder.newlines) == {"\r", "\n", "\r\n"} _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit