diff options
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_struct.c | 8 | ||||
-rw-r--r-- | Modules/clinic/_struct.c.h | 20 |
2 files changed, 16 insertions, 12 deletions
diff --git a/Modules/_struct.c b/Modules/_struct.c index 3626bad..78cd0f3 100644 --- a/Modules/_struct.c +++ b/Modules/_struct.c @@ -2162,7 +2162,7 @@ pack_into(PyObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames) unpack format: object - inputstr: object + buffer: Py_buffer / Return a tuple containing values unpacked according to the format string. @@ -2173,8 +2173,8 @@ See help(struct) for more on format strings. [clinic start generated code]*/ static PyObject * -unpack_impl(PyObject *module, PyObject *format, PyObject *inputstr) -/*[clinic end generated code: output=06951d66eae6d63b input=4b81d54988890f5e]*/ +unpack_impl(PyObject *module, PyObject *format, Py_buffer *buffer) +/*[clinic end generated code: output=f75ada02aaa33b3b input=654078e6660c2df0]*/ { PyStructObject *s_object; PyObject *result; @@ -2182,7 +2182,7 @@ unpack_impl(PyObject *module, PyObject *format, PyObject *inputstr) s_object = cache_struct(format); if (s_object == NULL) return NULL; - result = Struct_unpack(s_object, inputstr); + result = Struct_unpack_impl(s_object, buffer); Py_DECREF(s_object); return result; } diff --git a/Modules/clinic/_struct.c.h b/Modules/clinic/_struct.c.h index f05ea53..f9c3a5c 100644 --- a/Modules/clinic/_struct.c.h +++ b/Modules/clinic/_struct.c.h @@ -156,7 +156,7 @@ PyDoc_STRVAR(calcsize__doc__, {"calcsize", (PyCFunction)calcsize, METH_O, calcsize__doc__}, PyDoc_STRVAR(unpack__doc__, -"unpack($module, format, inputstr, /)\n" +"unpack($module, format, buffer, /)\n" "--\n" "\n" "Return a tuple containing values unpacked according to the format string.\n" @@ -169,27 +169,31 @@ PyDoc_STRVAR(unpack__doc__, {"unpack", (PyCFunction)unpack, METH_FASTCALL, unpack__doc__}, static PyObject * -unpack_impl(PyObject *module, PyObject *format, PyObject *inputstr); +unpack_impl(PyObject *module, PyObject *format, Py_buffer *buffer); static PyObject * unpack(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames) { PyObject *return_value = NULL; PyObject *format; - PyObject *inputstr; + Py_buffer buffer = {NULL, NULL}; - if (!_PyArg_UnpackStack(args, nargs, "unpack", - 2, 2, - &format, &inputstr)) { + if (!_PyArg_ParseStack(args, nargs, "Oy*:unpack", + &format, &buffer)) { goto exit; } if (!_PyArg_NoStackKeywords("unpack", kwnames)) { goto exit; } - return_value = unpack_impl(module, format, inputstr); + return_value = unpack_impl(module, format, &buffer); exit: + /* Cleanup for buffer */ + if (buffer.obj) { + PyBuffer_Release(&buffer); + } + return return_value; } @@ -273,4 +277,4 @@ iter_unpack(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnam exit: return return_value; } -/*[clinic end generated code: output=db8152ad222fa3d0 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=0714090a5d0ea8ce input=a9049054013a1b77]*/ |