Skip to content

Commit aa0eebb

Browse files
committed
Add read support for objects that support buffer protocol
1 parent 6042f35 commit aa0eebb

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

fuseparts/_fusemodule.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,18 @@ read_func(const char *path, char *buf, size_t s, off_t off)
678678

679679

680680
#if PY_MAJOR_VERSION >= 3
681-
if(PyBytes_Check(v)) {
681+
Py_buffer buffer;
682+
683+
if(PyObject_CheckBuffer(v)) {
684+
PyObject_GetBuffer(v, &buffer, PyBUF_SIMPLE);
685+
686+
if(buffer.len <= s) {
687+
memcpy(buf, buffer.buf, buffer.len);
688+
ret = buffer.len;
689+
}
690+
691+
PyBuffer_Release(&buffer);
692+
} else if(PyBytes_Check(v)) {
682693
if(PyBytes_Size(v) > s)
683694
goto OUT_DECREF;
684695
memcpy(buf, PyBytes_AsString(v), PyBytes_Size(v));

0 commit comments

Comments
 (0)