cpython: 6b3217b96a77 (original) (raw)
--- a/Lib/test/test_buffer.py +++ b/Lib/test/test_buffer.py @@ -21,6 +21,14 @@ class BufferTests(unittest.TestCase): self.assertEqual(b[start:stop:step], s[start:stop:step])
- def test_newbuffer_interface(self):
# Test that the buffer object has the new buffer interface[](#l1.8)
# as used by the memoryview object[](#l1.9)
s = "".join(chr(c) for c in list(range(255, -1, -1)))[](#l1.10)
b = buffer(s)[](#l1.11)
m = memoryview(b) # Should not raise an exception[](#l1.12)
self.assertEqual(m.tobytes(), s)[](#l1.13)
+ def test_main(): with test_support.check_py3k_warnings(("buffer.. not supported",
--- a/Objects/bufferobject.c +++ b/Objects/bufferobject.c @@ -802,6 +802,16 @@ buffer_getcharbuf(PyBufferObject *self, return size; } +static int buffer_getbuffer(PyBufferObject *self, Py_buffer *buf, int flags) +{
- void *ptr;
- Py_ssize_t size;
- if (!get_buf(self, &ptr, &size, ANY_BUFFER))
return -1;[](#l2.12)
- return PyBuffer_FillInfo(buf, (PyObject*)self, ptr, size,
self->b_readonly, flags);[](#l2.14)
+} + static PySequenceMethods buffer_as_sequence = { (lenfunc)buffer_length, /sq_length/ (binaryfunc)buffer_concat, /sq_concat/ @@ -823,6 +833,7 @@ static PyBufferProcs buffer_as_buffer = (writebufferproc)buffer_getwritebuf, (segcountproc)buffer_getsegcount, (charbufferproc)buffer_getcharbuf,
}; PyTypeObject PyBuffer_Type = { @@ -845,7 +856,7 @@ PyTypeObject PyBuffer_Type = { PyObject_GenericGetAttr, /* tp_getattro / 0, / tp_setattro / &buffer_as_buffer, / tp_as_buffer */