[pypy-commit] pypy py3.5: Make sure that BufferedReader passes down a valid memoryview to reader.raw.readinto()
rlamy
pypy.commits at gmail.com
Thu Dec 1 01:35:38 EST 2016
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: py3.5
Changeset: r88785:58cf1903ac70
Date: 2016-12-01 06:34 +0000
http://bitbucket.org/pypy/pypy/changeset/58cf1903ac70/
Log: Make sure that BufferedReader passes down a valid memoryview to
reader.raw.readinto()
diff --git a/pypy/module/_io/interp_bufferedio.py b/pypy/module/_io/interp_bufferedio.py
--- a/pypy/module/_io/interp_bufferedio.py
+++ b/pypy/module/_io/interp_bufferedio.py
@@ -158,6 +158,9 @@
def getlength(self):
return self.length
+ def getitem(self, index):
+ return self.buf[index]
+
def setitem(self, index, char):
self.buf[self.start + index] = char
diff --git a/pypy/module/_io/test/test_bufferedio.py b/pypy/module/_io/test/test_bufferedio.py
--- a/pypy/module/_io/test/test_bufferedio.py
+++ b/pypy/module/_io/test/test_bufferedio.py
@@ -65,6 +65,23 @@
bufio = _io.BufferedReader(MockIO())
assert bufio.read(9000) == b"abcdefg"
+ def test_valid_buffer(self):
+ import _io
+
+ class MockIO(_io._IOBase):
+ def readable(self):
+ return True
+
+ def readinto(self, buf):
+ # Check that `buf` is a valid memoryview object
+ assert buf.itemsize == 1
+ assert buf.strides == (1,)
+ assert buf.shape == (len(buf),)
+ return len(bytes(buf))
+
+ bufio = _io.BufferedReader(MockIO())
+ assert len(bufio.read(5)) == 5 # Note: PyPy zeros the buffer, CPython does not
+
def test_buffering(self):
import _io
data = b"abcdefghi"
@@ -695,7 +712,7 @@
expected[j] = 2
expected[i] = 1
assert raw.getvalue() == expected
-
+
def test_interleaved_read_write(self):
import _io as io
# Test for issue #12213
More information about the pypy-commit
mailing list