https://github.com/python/cpython/commit/ed8675c571d633fb93c69f113a6bf47e80b7d120 commit: ed8675c571d633fb93c69f113a6bf47e80b7d120 branch: main author: Victor Stinner <vstin...@python.org> committer: vstinner <vstin...@python.org> date: 2025-03-04T10:33:09+01:00 summary:
gh-111178: Fix function signatures of unicodeiter (#130684) files: M Objects/unicodeobject.c diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 20052e2d17062d..21ccb01f86bc61 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -16025,23 +16025,26 @@ typedef struct { } unicodeiterobject; static void -unicodeiter_dealloc(unicodeiterobject *it) +unicodeiter_dealloc(PyObject *op) { + unicodeiterobject *it = (unicodeiterobject *)op; _PyObject_GC_UNTRACK(it); Py_XDECREF(it->it_seq); PyObject_GC_Del(it); } static int -unicodeiter_traverse(unicodeiterobject *it, visitproc visit, void *arg) +unicodeiter_traverse(PyObject *op, visitproc visit, void *arg) { + unicodeiterobject *it = (unicodeiterobject *)op; Py_VISIT(it->it_seq); return 0; } static PyObject * -unicodeiter_next(unicodeiterobject *it) +unicodeiter_next(PyObject *op) { + unicodeiterobject *it = (unicodeiterobject *)op; PyObject *seq; assert(it != NULL); @@ -16064,8 +16067,9 @@ unicodeiter_next(unicodeiterobject *it) } static PyObject * -unicode_ascii_iter_next(unicodeiterobject *it) +unicode_ascii_iter_next(PyObject *op) { + unicodeiterobject *it = (unicodeiterobject *)op; assert(it != NULL); PyObject *seq = it->it_seq; if (seq == NULL) { @@ -16086,8 +16090,9 @@ unicode_ascii_iter_next(unicodeiterobject *it) } static PyObject * -unicodeiter_len(unicodeiterobject *it, PyObject *Py_UNUSED(ignored)) +unicodeiter_len(PyObject *op, PyObject *Py_UNUSED(ignored)) { + unicodeiterobject *it = (unicodeiterobject *)op; Py_ssize_t len = 0; if (it->it_seq) len = PyUnicode_GET_LENGTH(it->it_seq) - it->it_index; @@ -16097,8 +16102,9 @@ unicodeiter_len(unicodeiterobject *it, PyObject *Py_UNUSED(ignored)) PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it))."); static PyObject * -unicodeiter_reduce(unicodeiterobject *it, PyObject *Py_UNUSED(ignored)) +unicodeiter_reduce(PyObject *op, PyObject *Py_UNUSED(ignored)) { + unicodeiterobject *it = (unicodeiterobject *)op; PyObject *iter = _PyEval_GetBuiltin(&_Py_ID(iter)); /* _PyEval_GetBuiltin can invoke arbitrary code, @@ -16120,8 +16126,9 @@ unicodeiter_reduce(unicodeiterobject *it, PyObject *Py_UNUSED(ignored)) PyDoc_STRVAR(reduce_doc, "Return state information for pickling."); static PyObject * -unicodeiter_setstate(unicodeiterobject *it, PyObject *state) +unicodeiter_setstate(PyObject *op, PyObject *state) { + unicodeiterobject *it = (unicodeiterobject *)op; Py_ssize_t index = PyLong_AsSsize_t(state); if (index == -1 && PyErr_Occurred()) return NULL; @@ -16138,12 +16145,9 @@ unicodeiter_setstate(unicodeiterobject *it, PyObject *state) PyDoc_STRVAR(setstate_doc, "Set state information for unpickling."); static PyMethodDef unicodeiter_methods[] = { - {"__length_hint__", (PyCFunction)unicodeiter_len, METH_NOARGS, - length_hint_doc}, - {"__reduce__", (PyCFunction)unicodeiter_reduce, METH_NOARGS, - reduce_doc}, - {"__setstate__", (PyCFunction)unicodeiter_setstate, METH_O, - setstate_doc}, + {"__length_hint__", unicodeiter_len, METH_NOARGS, length_hint_doc}, + {"__reduce__", unicodeiter_reduce, METH_NOARGS, reduce_doc}, + {"__setstate__", unicodeiter_setstate, METH_O, setstate_doc}, {NULL, NULL} /* sentinel */ }; @@ -16153,7 +16157,7 @@ PyTypeObject PyUnicodeIter_Type = { sizeof(unicodeiterobject), /* tp_basicsize */ 0, /* tp_itemsize */ /* methods */ - (destructor)unicodeiter_dealloc, /* tp_dealloc */ + unicodeiter_dealloc,/* tp_dealloc */ 0, /* tp_vectorcall_offset */ 0, /* tp_getattr */ 0, /* tp_setattr */ @@ -16170,12 +16174,12 @@ PyTypeObject PyUnicodeIter_Type = { 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ 0, /* tp_doc */ - (traverseproc)unicodeiter_traverse, /* tp_traverse */ + unicodeiter_traverse, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ PyObject_SelfIter, /* tp_iter */ - (iternextfunc)unicodeiter_next, /* tp_iternext */ + unicodeiter_next, /* tp_iternext */ unicodeiter_methods, /* tp_methods */ 0, }; @@ -16184,12 +16188,12 @@ PyTypeObject _PyUnicodeASCIIIter_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) .tp_name = "str_ascii_iterator", .tp_basicsize = sizeof(unicodeiterobject), - .tp_dealloc = (destructor)unicodeiter_dealloc, + .tp_dealloc = unicodeiter_dealloc, .tp_getattro = PyObject_GenericGetAttr, .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - .tp_traverse = (traverseproc)unicodeiter_traverse, + .tp_traverse = unicodeiter_traverse, .tp_iter = PyObject_SelfIter, - .tp_iternext = (iternextfunc)unicode_ascii_iter_next, + .tp_iternext = unicode_ascii_iter_next, .tp_methods = unicodeiter_methods, }; _______________________________________________ Python-checkins mailing list -- python-checkins@python.org To unsubscribe send an email to python-checkins-le...@python.org https://mail.python.org/mailman3/lists/python-checkins.python.org/ Member address: arch...@mail-archive.com