Add read support for objects that support buffer protocol

This commit is contained in:
Eric Pruitt 2024-01-27 16:47:11 -08:00
parent 6042f35374
commit aa0eebb273

View file

@ -678,7 +678,18 @@ read_func(const char *path, char *buf, size_t s, off_t off)
#if PY_MAJOR_VERSION >= 3
if(PyBytes_Check(v)) {
Py_buffer buffer;
if(PyObject_CheckBuffer(v)) {
PyObject_GetBuffer(v, &buffer, PyBUF_SIMPLE);
if(buffer.len <= s) {
memcpy(buf, buffer.buf, buffer.len);
ret = buffer.len;
}
PyBuffer_Release(&buffer);
} else if(PyBytes_Check(v)) {
if(PyBytes_Size(v) > s)
goto OUT_DECREF;
memcpy(buf, PyBytes_AsString(v), PyBytes_Size(v));