@@ -988,26 +988,29 @@ _PyTuple_Resize(PyObject **pv, Py_ssize_t newsize)
988988
989989/*********************** Tuple Iterator **************************/ 
990990
991+ #define  _PyTupleIterObject_CAST (op ) ((_PyTupleIterObject *)(op))
991992
992993static  void 
993- tupleiter_dealloc (_PyTupleIterObject   * it )
994+ tupleiter_dealloc (PyObject   * self )
994995{
996+     _PyTupleIterObject  * it  =  _PyTupleIterObject_CAST (self );
995997    _PyObject_GC_UNTRACK (it );
996998    Py_XDECREF (it -> it_seq );
997999    PyObject_GC_Del (it );
9981000}
9991001
10001002static  int 
1001- tupleiter_traverse (_PyTupleIterObject   * it , visitproc  visit , void  * arg )
1003+ tupleiter_traverse (PyObject   * self , visitproc  visit , void  * arg )
10021004{
1005+     _PyTupleIterObject  * it  =  _PyTupleIterObject_CAST (self );
10031006    Py_VISIT (it -> it_seq );
10041007    return  0 ;
10051008}
10061009
10071010static  PyObject  * 
1008- tupleiter_next (PyObject  * obj )
1011+ tupleiter_next (PyObject  * self )
10091012{
1010-     _PyTupleIterObject  * it  =  ( _PyTupleIterObject   * ) obj ;
1013+     _PyTupleIterObject  * it  =  _PyTupleIterObject_CAST ( self ) ;
10111014    PyTupleObject  * seq ;
10121015    PyObject  * item ;
10131016
@@ -1029,8 +1032,9 @@ tupleiter_next(PyObject *obj)
10291032}
10301033
10311034static  PyObject  * 
1032- tupleiter_len (_PyTupleIterObject   * it , PyObject  * Py_UNUSED (ignored ))
1035+ tupleiter_len (PyObject   * self , PyObject  * Py_UNUSED (ignored ))
10331036{
1037+     _PyTupleIterObject  * it  =  _PyTupleIterObject_CAST (self );
10341038    Py_ssize_t  len  =  0 ;
10351039    if  (it -> it_seq )
10361040        len  =  PyTuple_GET_SIZE (it -> it_seq ) -  it -> it_index ;
@@ -1040,13 +1044,14 @@ tupleiter_len(_PyTupleIterObject *it, PyObject *Py_UNUSED(ignored))
10401044PyDoc_STRVAR (length_hint_doc , "Private method returning an estimate of len(list(it))." );
10411045
10421046static  PyObject  * 
1043- tupleiter_reduce (_PyTupleIterObject   * it , PyObject  * Py_UNUSED (ignored ))
1047+ tupleiter_reduce (PyObject   * self , PyObject  * Py_UNUSED (ignored ))
10441048{
10451049    PyObject  * iter  =  _PyEval_GetBuiltin (& _Py_ID (iter ));
10461050
10471051    /* _PyEval_GetBuiltin can invoke arbitrary code, 
10481052     * call must be before access of iterator pointers. 
10491053     * see issue #101765 */ 
1054+     _PyTupleIterObject  * it  =  _PyTupleIterObject_CAST (self );
10501055
10511056    if  (it -> it_seq )
10521057        return  Py_BuildValue ("N(O)n" , iter , it -> it_seq , it -> it_index );
@@ -1055,8 +1060,9 @@ tupleiter_reduce(_PyTupleIterObject *it, PyObject *Py_UNUSED(ignored))
10551060}
10561061
10571062static  PyObject  * 
1058- tupleiter_setstate (_PyTupleIterObject   * it , PyObject  * state )
1063+ tupleiter_setstate (PyObject   * self , PyObject  * state )
10591064{
1065+     _PyTupleIterObject  * it  =  _PyTupleIterObject_CAST (self );
10601066    Py_ssize_t  index  =  PyLong_AsSsize_t (state );
10611067    if  (index  ==  -1  &&  PyErr_Occurred ())
10621068        return  NULL ;
@@ -1074,19 +1080,19 @@ PyDoc_STRVAR(reduce_doc, "Return state information for pickling.");
10741080PyDoc_STRVAR (setstate_doc , "Set state information for unpickling." );
10751081
10761082static  PyMethodDef  tupleiter_methods [] =  {
1077-     {"__length_hint__" , ( PyCFunction ) tupleiter_len , METH_NOARGS , length_hint_doc },
1078-     {"__reduce__" , ( PyCFunction ) tupleiter_reduce , METH_NOARGS , reduce_doc },
1079-     {"__setstate__" , ( PyCFunction ) tupleiter_setstate , METH_O , setstate_doc },
1080-     {NULL ,               NULL }            /* sentinel */ 
1083+     {"__length_hint__" , tupleiter_len , METH_NOARGS , length_hint_doc },
1084+     {"__reduce__" , tupleiter_reduce , METH_NOARGS , reduce_doc },
1085+     {"__setstate__" , tupleiter_setstate , METH_O , setstate_doc },
1086+     {NULL , NULL ,  0 ,  NULL } /* sentinel */ 
10811087};
10821088
10831089PyTypeObject  PyTupleIter_Type  =  {
10841090    PyVarObject_HEAD_INIT (& PyType_Type , 0 )
10851091    "tuple_iterator" ,                           /* tp_name */ 
1086-     sizeof (_PyTupleIterObject ),                     /* tp_basicsize */ 
1092+     sizeof (_PyTupleIterObject ),                 /* tp_basicsize */ 
10871093    0 ,                                          /* tp_itemsize */ 
10881094    /* methods */ 
1089-     ( destructor ) tupleiter_dealloc ,              /* tp_dealloc */ 
1095+     tupleiter_dealloc ,                           /* tp_dealloc */ 
10901096    0 ,                                          /* tp_vectorcall_offset */ 
10911097    0 ,                                          /* tp_getattr */ 
10921098    0 ,                                          /* tp_setattr */ 
@@ -1103,7 +1109,7 @@ PyTypeObject PyTupleIter_Type = {
11031109    0 ,                                          /* tp_as_buffer */ 
11041110    Py_TPFLAGS_DEFAULT  | Py_TPFLAGS_HAVE_GC ,/* tp_flags */ 
11051111    0 ,                                          /* tp_doc */ 
1106-     ( traverseproc ) tupleiter_traverse ,           /* tp_traverse */ 
1112+     tupleiter_traverse ,                          /* tp_traverse */ 
11071113    0 ,                                          /* tp_clear */ 
11081114    0 ,                                          /* tp_richcompare */ 
11091115    0 ,                                          /* tp_weaklistoffset */ 
0 commit comments