bpo-41103: Remove old buffer protocol support (#21117)

They are deprecated since Python 3.0.
This commit is contained in:
Inada Naoki 2020-06-26 08:07:22 +09:00 committed by GitHub
parent 77ed29b2c2
commit 6f8a6ee59c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 9 additions and 204 deletions

View file

@ -292,85 +292,6 @@ PyObject_CheckBuffer(PyObject *obj)
}
/* We release the buffer right after use of this function which could
cause issues later on. Don't use these functions in new code.
*/
int
PyObject_CheckReadBuffer(PyObject *obj)
{
PyBufferProcs *pb = Py_TYPE(obj)->tp_as_buffer;
Py_buffer view;
if (pb == NULL ||
pb->bf_getbuffer == NULL)
return 0;
if ((*pb->bf_getbuffer)(obj, &view, PyBUF_SIMPLE) == -1) {
PyErr_Clear();
return 0;
}
PyBuffer_Release(&view);
return 1;
}
static int
as_read_buffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)
{
Py_buffer view;
if (obj == NULL || buffer == NULL || buffer_len == NULL) {
null_error();
return -1;
}
if (PyObject_GetBuffer(obj, &view, PyBUF_SIMPLE) != 0)
return -1;
*buffer = view.buf;
*buffer_len = view.len;
PyBuffer_Release(&view);
return 0;
}
int
PyObject_AsCharBuffer(PyObject *obj,
const char **buffer,
Py_ssize_t *buffer_len)
{
return as_read_buffer(obj, (const void **)buffer, buffer_len);
}
int PyObject_AsReadBuffer(PyObject *obj,
const void **buffer,
Py_ssize_t *buffer_len)
{
return as_read_buffer(obj, buffer, buffer_len);
}
int PyObject_AsWriteBuffer(PyObject *obj,
void **buffer,
Py_ssize_t *buffer_len)
{
PyBufferProcs *pb;
Py_buffer view;
if (obj == NULL || buffer == NULL || buffer_len == NULL) {
null_error();
return -1;
}
pb = Py_TYPE(obj)->tp_as_buffer;
if (pb == NULL ||
pb->bf_getbuffer == NULL ||
((*pb->bf_getbuffer)(obj, &view, PyBUF_WRITABLE) != 0)) {
PyErr_SetString(PyExc_TypeError,
"expected a writable bytes-like object");
return -1;
}
*buffer = view.buf;
*buffer_len = view.len;
PyBuffer_Release(&view);
return 0;
}
/* Buffer C-API for Python 3.0 */
int