mirror of
https://github.com/python/cpython.git
synced 2025-07-31 07:04:42 +00:00
bpo-41103: Remove old buffer protocol support (#21117)
They are deprecated since Python 3.0.
This commit is contained in:
parent
77ed29b2c2
commit
6f8a6ee59c
8 changed files with 9 additions and 204 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue