#2538: bytes objects can only provide read-only buffers

This commit is contained in:
Antoine Pitrou 2008-08-02 21:02:48 +00:00
parent 07431a302a
commit 2f89aa6785
4 changed files with 13 additions and 8 deletions

View file

@ -453,6 +453,11 @@ def test_ord(self):
class BytesTest(BaseBytesTest):
type2test = bytes
def test_buffer_is_readonly(self):
with open(sys.stdin.fileno(), "rb", buffering=0) as f:
self.assertRaises(TypeError, f.readinto, b"")
class ByteArrayTest(BaseBytesTest):
type2test = bytearray

View file

@ -1112,7 +1112,7 @@ def __init__(self, methodName='runTest'):
SocketConnectedTest.__init__(self, methodName=methodName)
def testRecvInto(self):
buf = b" "*1024
buf = bytearray(1024)
nbytes = self.cli_conn.recv_into(buf)
self.assertEqual(nbytes, len(MSG))
msg = buf[:len(MSG)]
@ -1123,7 +1123,7 @@ def _testRecvInto(self):
self.serv_conn.send(buf)
def testRecvFromInto(self):
buf = b" "*1024
buf = bytearray(1024)
nbytes, addr = self.cli_conn.recvfrom_into(buf)
self.assertEqual(nbytes, len(MSG))
msg = buf[:len(MSG)]

View file

@ -965,7 +965,7 @@ static int
string_buffer_getbuffer(PyBytesObject *self, Py_buffer *view, int flags)
{
return PyBuffer_FillInfo(view, (void *)self->ob_sval, Py_SIZE(self),
0, flags);
1, flags);
}
static PySequenceMethods string_as_sequence = {

View file

@ -56,7 +56,7 @@ PyMemoryView_FromObject(PyObject *base)
if (mview == NULL) return NULL;
mview->base = NULL;
if (PyObject_GetBuffer(base, &(mview->view), PyBUF_FULL) < 0) {
if (PyObject_GetBuffer(base, &(mview->view), PyBUF_FULL_RO) < 0) {
Py_DECREF(mview);
return NULL;
}