diff --git a/feedparser/encodings.py b/feedparser/encodings.py index 2f198f7f..da8f0a31 100644 --- a/feedparser/encodings.py +++ b/feedparser/encodings.py @@ -623,7 +623,7 @@ def read(self, size=-1): if self.offset < len(self.prefix): if size < 0: - chunk = self.prefix + chunk = self.prefix[self.offset :] else: chunk = self.prefix[self.offset : self.offset + size] size -= len(chunk) diff --git a/tests/test_encoding_helpers.py b/tests/test_encoding_helpers.py index 8d798754..7efb72c4 100644 --- a/tests/test_encoding_helpers.py +++ b/tests/test_encoding_helpers.py @@ -124,6 +124,10 @@ def test_prefix_file_wrapper(factory): assert f.read(0) == b"" assert f.read() == b"abcdef" + f = feedparser.encodings.PrefixFileWrapper(b"abc", factory(b"def")) + assert f.read(2) == b"ab" + assert f.read() == b"cdef" + # Each emoji is 4 bytes long when encoded in UTF-8. @pytest.mark.parametrize("data", ("😀😛🤯😱", "😀a😛b🤯c😱"))