@@ -181,8 +181,9 @@ PyTuple_Pack(Py_ssize_t n, ...)
181181/* Methods */
182182
183183static void
184- tupledealloc (PyTupleObject * op )
184+ tupledealloc (PyObject * arg )
185185{
186+ PyTupleObject * op = _PyTuple_CAST (arg );
186187 if (Py_SIZE (op ) == 0 ) {
187188 /* The empty tuple is statically allocated. */
188189 if (op == & _Py_SINGLETON (tuple_empty )) {
@@ -316,8 +317,9 @@ tuplerepr(PyTupleObject *v)
316317/* Tests have shown that it's not worth to cache the hash value, see
317318 https://bugs.python.org/issue9685 */
318319static Py_hash_t
319- tuplehash (PyTupleObject * v )
320+ tuplehash (PyObject * op )
320321{
322+ PyTupleObject * v = _PyTuple_CAST (op );
321323 Py_ssize_t i , len = Py_SIZE (v );
322324 PyObject * * item = v -> ob_item ;
323325
@@ -342,25 +344,27 @@ tuplehash(PyTupleObject *v)
342344}
343345
344346static Py_ssize_t
345- tuplelength (PyTupleObject * a )
347+ tuplelength (PyObject * op )
346348{
349+ PyTupleObject * a = _PyTuple_CAST (op );
347350 return Py_SIZE (a );
348351}
349352
350353static int
351- tuplecontains (PyTupleObject * a , PyObject * el )
354+ tuplecontains (PyObject * op , PyObject * el )
352355{
353- Py_ssize_t i ;
354- int cmp ;
355-
356- for (i = 0 , cmp = 0 ; cmp == 0 && i < Py_SIZE (a ); ++ i )
356+ PyTupleObject * a = _PyTuple_CAST (op );
357+ int cmp = 0 ;
358+ for (Py_ssize_t i = 0 ; cmp == 0 && i < Py_SIZE (a ); ++ i ) {
357359 cmp = PyObject_RichCompareBool (PyTuple_GET_ITEM (a , i ), el , Py_EQ );
360+ }
358361 return cmp ;
359362}
360363
361364static PyObject *
362- tupleitem (PyTupleObject * a , Py_ssize_t i )
365+ tupleitem (PyObject * op , Py_ssize_t i )
363366{
367+ PyTupleObject * a = _PyTuple_CAST (op );
364368 if (i < 0 || i >= Py_SIZE (a )) {
365369 PyErr_SetString (PyExc_IndexError , "tuple index out of range" );
366370 return NULL ;
@@ -458,12 +462,9 @@ PyTuple_GetSlice(PyObject *op, Py_ssize_t i, Py_ssize_t j)
458462}
459463
460464static PyObject *
461- tupleconcat (PyTupleObject * a , PyObject * bb )
465+ tupleconcat (PyObject * op , PyObject * bb )
462466{
463- Py_ssize_t size ;
464- Py_ssize_t i ;
465- PyObject * * src , * * dest ;
466- PyTupleObject * np ;
467+ PyTupleObject * a = _PyTuple_CAST (op );
467468 if (Py_SIZE (a ) == 0 && PyTuple_CheckExact (bb )) {
468469 return Py_NewRef (bb );
469470 }
@@ -479,27 +480,30 @@ tupleconcat(PyTupleObject *a, PyObject *bb)
479480 return Py_NewRef (a );
480481 }
481482 assert ((size_t )Py_SIZE (a ) + (size_t )Py_SIZE (b ) < PY_SSIZE_T_MAX );
482- size = Py_SIZE (a ) + Py_SIZE (b );
483+ Py_ssize_t size = Py_SIZE (a ) + Py_SIZE (b );
483484 if (size == 0 ) {
484485 return tuple_get_empty ();
485486 }
486487
487- np = tuple_alloc (size );
488+ PyTupleObject * np = tuple_alloc (size );
488489 if (np == NULL ) {
489490 return NULL ;
490491 }
491- src = a -> ob_item ;
492- dest = np -> ob_item ;
493- for (i = 0 ; i < Py_SIZE (a ); i ++ ) {
492+
493+ PyObject * * src = a -> ob_item ;
494+ PyObject * * dest = np -> ob_item ;
495+ for (Py_ssize_t i = 0 ; i < Py_SIZE (a ); i ++ ) {
494496 PyObject * v = src [i ];
495497 dest [i ] = Py_NewRef (v );
496498 }
499+
497500 src = b -> ob_item ;
498501 dest = np -> ob_item + Py_SIZE (a );
499- for (i = 0 ; i < Py_SIZE (b ); i ++ ) {
502+ for (Py_ssize_t i = 0 ; i < Py_SIZE (b ); i ++ ) {
500503 PyObject * v = src [i ];
501504 dest [i ] = Py_NewRef (v );
502505 }
506+
503507 _PyObject_GC_TRACK (np );
504508 return (PyObject * )np ;
505509}
@@ -621,11 +625,10 @@ tuple_count(PyTupleObject *self, PyObject *value)
621625}
622626
623627static int
624- tupletraverse (PyTupleObject * o , visitproc visit , void * arg )
628+ tupletraverse (PyObject * op , visitproc visit , void * arg )
625629{
626- Py_ssize_t i ;
627-
628- for (i = Py_SIZE (o ); -- i >= 0 ; )
630+ PyTupleObject * o = _PyTuple_CAST (op );
631+ for (Py_ssize_t i = Py_SIZE (o ); -- i >= 0 ; )
629632 Py_VISIT (o -> ob_item [i ]);
630633 return 0 ;
631634}
@@ -781,15 +784,16 @@ static PySequenceMethods tuple_as_sequence = {
781784};
782785
783786static PyObject *
784- tuplesubscript (PyTupleObject * self , PyObject * item )
787+ tuplesubscript (PyObject * op , PyObject * item )
785788{
789+ PyTupleObject * self = _PyTuple_CAST (op );
786790 if (_PyIndex_Check (item )) {
787791 Py_ssize_t i = PyNumber_AsSsize_t (item , PyExc_IndexError );
788792 if (i == -1 && PyErr_Occurred ())
789793 return NULL ;
790794 if (i < 0 )
791795 i += PyTuple_GET_SIZE (self );
792- return tupleitem (self , i );
796+ return tupleitem (( PyObject * ) self , i );
793797 }
794798 else if (PySlice_Check (item )) {
795799 Py_ssize_t start , stop , step , slicelength , i ;
0 commit comments