@@ -144,6 +144,8 @@ struct dequeobject {
144144 PyObject * weakreflist ;
145145};
146146
147+ #define _dequeobject_CAST (op ) ((dequeobject *)(op))
148+
147149/* For debug builds, add error checking to track the endpoints
148150 * in the chain of links. The goal is to make sure that link
149151 * assignments only take place at endpoints so that links already
@@ -570,8 +572,9 @@ deque_extendleft_impl(dequeobject *deque, PyObject *iterable)
570572}
571573
572574static PyObject *
573- deque_inplace_concat (dequeobject * deque , PyObject * other )
575+ deque_inplace_concat (PyObject * self , PyObject * other )
574576{
577+ dequeobject * deque = _dequeobject_CAST (self );
575578 PyObject * result ;
576579
577580 // deque_extend is thread-safe
@@ -597,14 +600,13 @@ deque_copy_impl(dequeobject *deque)
597600/*[clinic end generated code: output=6409b3d1ad2898b5 input=51d2ed1a23bab5e2]*/
598601{
599602 PyObject * result ;
600- dequeobject * old_deque = ( dequeobject * ) deque ;
603+ dequeobject * old_deque = deque ;
601604 collections_state * state = find_module_state_by_def (Py_TYPE (deque ));
602605 if (Py_IS_TYPE (deque , state -> deque_type )) {
603606 dequeobject * new_deque ;
604607 PyObject * rv ;
605608
606- new_deque = (dequeobject * )deque_new (state -> deque_type ,
607- (PyObject * )NULL , (PyObject * )NULL );
609+ new_deque = (dequeobject * )deque_new (state -> deque_type , NULL , NULL );
608610 if (new_deque == NULL )
609611 return NULL ;
610612 new_deque -> maxlen = old_deque -> maxlen ;
@@ -689,8 +691,9 @@ deque_concat_lock_held(dequeobject *deque, PyObject *other)
689691}
690692
691693static PyObject *
692- deque_concat (dequeobject * deque , PyObject * other )
694+ deque_concat (PyObject * self , PyObject * other )
693695{
696+ dequeobject * deque = _dequeobject_CAST (self );
694697 PyObject * result ;
695698 Py_BEGIN_CRITICAL_SECTION (deque );
696699 result = deque_concat_lock_held (deque , other );
@@ -699,7 +702,7 @@ deque_concat(dequeobject *deque, PyObject *other)
699702}
700703
701704static int
702- deque_clear (dequeobject * deque )
705+ deque_clear (PyObject * self )
703706{
704707 block * b ;
705708 block * prevblock ;
@@ -708,6 +711,7 @@ deque_clear(dequeobject *deque)
708711 Py_ssize_t n , m ;
709712 PyObject * item ;
710713 PyObject * * itemptr , * * limit ;
714+ dequeobject * deque = _dequeobject_CAST (self );
711715
712716 if (Py_SIZE (deque ) == 0 )
713717 return 0 ;
@@ -795,7 +799,7 @@ static PyObject *
795799deque_clearmethod_impl (dequeobject * deque )
796800/*[clinic end generated code: output=79b2513e097615c1 input=3a22e9605d20c5e9]*/
797801{
798- deque_clear (deque );
802+ ( void ) deque_clear (( PyObject * ) deque );
799803 Py_RETURN_NONE ;
800804}
801805
@@ -812,7 +816,7 @@ deque_inplace_repeat_lock_held(dequeobject *deque, Py_ssize_t n)
812816 }
813817
814818 if (n <= 0 ) {
815- deque_clear (deque );
819+ ( void ) deque_clear (( PyObject * ) deque );
816820 return Py_NewRef (deque );
817821 }
818822
@@ -877,8 +881,9 @@ deque_inplace_repeat_lock_held(dequeobject *deque, Py_ssize_t n)
877881}
878882
879883static PyObject *
880- deque_inplace_repeat (dequeobject * deque , Py_ssize_t n )
884+ deque_inplace_repeat (PyObject * self , Py_ssize_t n )
881885{
886+ dequeobject * deque = _dequeobject_CAST (self );
882887 PyObject * result ;
883888 Py_BEGIN_CRITICAL_SECTION (deque );
884889 result = deque_inplace_repeat_lock_held (deque , n );
@@ -887,8 +892,9 @@ deque_inplace_repeat(dequeobject *deque, Py_ssize_t n)
887892}
888893
889894static PyObject *
890- deque_repeat (dequeobject * deque , Py_ssize_t n )
895+ deque_repeat (PyObject * self , Py_ssize_t n )
891896{
897+ dequeobject * deque = _dequeobject_CAST (self );
892898 dequeobject * new_deque ;
893899 PyObject * rv ;
894900
@@ -1202,8 +1208,9 @@ deque_contains_lock_held(dequeobject *deque, PyObject *v)
12021208}
12031209
12041210static int
1205- deque_contains (dequeobject * deque , PyObject * v )
1211+ deque_contains (PyObject * self , PyObject * v )
12061212{
1213+ dequeobject * deque = _dequeobject_CAST (self );
12071214 int result ;
12081215 Py_BEGIN_CRITICAL_SECTION (deque );
12091216 result = deque_contains_lock_held (deque , v );
@@ -1212,9 +1219,10 @@ deque_contains(dequeobject *deque, PyObject *v)
12121219}
12131220
12141221static Py_ssize_t
1215- deque_len (dequeobject * deque )
1222+ deque_len (PyObject * self )
12161223{
1217- return FT_ATOMIC_LOAD_SSIZE (((PyVarObject * )deque )-> ob_size );
1224+ PyVarObject * deque = _PyVarObject_CAST (self );
1225+ return FT_ATOMIC_LOAD_SSIZE (deque -> ob_size );
12181226}
12191227
12201228/*[clinic input]
@@ -1394,8 +1402,9 @@ deque_item_lock_held(dequeobject *deque, Py_ssize_t i)
13941402}
13951403
13961404static PyObject *
1397- deque_item (dequeobject * deque , Py_ssize_t i )
1405+ deque_item (PyObject * self , Py_ssize_t i )
13981406{
1407+ dequeobject * deque = _dequeobject_CAST (self );
13991408 PyObject * result ;
14001409 Py_BEGIN_CRITICAL_SECTION (deque );
14011410 result = deque_item_lock_held (deque , i );
@@ -1505,8 +1514,9 @@ deque_ass_item_lock_held(dequeobject *deque, Py_ssize_t i, PyObject *v)
15051514}
15061515
15071516static int
1508- deque_ass_item (dequeobject * deque , Py_ssize_t i , PyObject * v )
1517+ deque_ass_item (PyObject * self , Py_ssize_t i , PyObject * v )
15091518{
1519+ dequeobject * deque = _dequeobject_CAST (self );
15101520 int result ;
15111521 Py_BEGIN_CRITICAL_SECTION (deque );
15121522 result = deque_ass_item_lock_held (deque , i , v );
@@ -1515,16 +1525,18 @@ deque_ass_item(dequeobject *deque, Py_ssize_t i, PyObject *v)
15151525}
15161526
15171527static void
1518- deque_dealloc (dequeobject * deque )
1528+ deque_dealloc (PyObject * self )
15191529{
1530+ dequeobject * deque = _dequeobject_CAST (self );
15201531 PyTypeObject * tp = Py_TYPE (deque );
15211532 Py_ssize_t i ;
15221533
15231534 PyObject_GC_UnTrack (deque );
1524- if (deque -> weakreflist != NULL )
1525- PyObject_ClearWeakRefs ((PyObject * ) deque );
1535+ if (deque -> weakreflist != NULL ) {
1536+ PyObject_ClearWeakRefs (self );
1537+ }
15261538 if (deque -> leftblock != NULL ) {
1527- deque_clear (deque );
1539+ ( void ) deque_clear (self );
15281540 assert (deque -> leftblock != NULL );
15291541 freeblock (deque , deque -> leftblock );
15301542 }
@@ -1538,8 +1550,9 @@ deque_dealloc(dequeobject *deque)
15381550}
15391551
15401552static int
1541- deque_traverse (dequeobject * deque , visitproc visit , void * arg )
1553+ deque_traverse (PyObject * self , visitproc visit , void * arg )
15421554{
1555+ dequeobject * deque = _dequeobject_CAST (self );
15431556 Py_VISIT (Py_TYPE (deque ));
15441557
15451558 block * b ;
@@ -1618,10 +1631,11 @@ deque_repr(PyObject *deque)
16181631 Py_ReprLeave (deque );
16191632 return NULL ;
16201633 }
1621- if (((dequeobject * )deque )-> maxlen >= 0 )
1634+ Py_ssize_t maxlen = _dequeobject_CAST (deque )-> maxlen ;
1635+ if (maxlen >= 0 )
16221636 result = PyUnicode_FromFormat ("%s(%R, maxlen=%zd)" ,
16231637 _PyType_Name (Py_TYPE (deque )), aslist ,
1624- (( dequeobject * ) deque ) -> maxlen );
1638+ maxlen );
16251639 else
16261640 result = PyUnicode_FromFormat ("%s(%R)" ,
16271641 _PyType_Name (Py_TYPE (deque )), aslist );
@@ -1644,8 +1658,8 @@ deque_richcompare(PyObject *v, PyObject *w, int op)
16441658 }
16451659
16461660 /* Shortcuts */
1647- vs = Py_SIZE (( dequeobject * ) v );
1648- ws = Py_SIZE (( dequeobject * ) w );
1661+ vs = Py_SIZE (v );
1662+ ws = Py_SIZE (w );
16491663 if (op == Py_EQ ) {
16501664 if (v == w )
16511665 Py_RETURN_TRUE ;
@@ -1737,7 +1751,7 @@ deque_init_impl(dequeobject *deque, PyObject *iterable, PyObject *maxlenobj)
17371751 }
17381752 deque -> maxlen = maxlen ;
17391753 if (Py_SIZE (deque ) > 0 )
1740- deque_clear (deque );
1754+ ( void ) deque_clear (( PyObject * ) deque );
17411755 if (iterable != NULL ) {
17421756 PyObject * rv = deque_extend_impl (deque , iterable );
17431757 if (rv == NULL )
@@ -1770,8 +1784,9 @@ deque___sizeof___impl(dequeobject *deque)
17701784}
17711785
17721786static PyObject *
1773- deque_get_maxlen (dequeobject * deque , void * Py_UNUSED (ignored ))
1787+ deque_get_maxlen (PyObject * self , void * Py_UNUSED (closure ))
17741788{
1789+ dequeobject * deque = _dequeobject_CAST (self );
17751790 if (deque -> maxlen < 0 )
17761791 Py_RETURN_NONE ;
17771792 return PyLong_FromSsize_t (deque -> maxlen );
@@ -1797,12 +1812,12 @@ deque___reversed___impl(dequeobject *deque)
17971812/* deque object ********************************************************/
17981813
17991814static PyGetSetDef deque_getset [] = {
1800- {"maxlen" , ( getter ) deque_get_maxlen , ( setter ) NULL ,
1815+ {"maxlen" , deque_get_maxlen , NULL ,
18011816 "maximum size of a deque or None if unbounded" },
18021817 {0 }
18031818};
18041819
1805- static PyObject * deque_iter (dequeobject * deque );
1820+ static PyObject * deque_iter (PyObject * deque );
18061821
18071822static PyMethodDef deque_methods [] = {
18081823 DEQUE_APPEND_METHODDEF
@@ -1884,9 +1899,10 @@ typedef struct {
18841899} dequeiterobject ;
18851900
18861901static PyObject *
1887- deque_iter (dequeobject * deque )
1902+ deque_iter (PyObject * self )
18881903{
18891904 dequeiterobject * it ;
1905+ dequeobject * deque = _dequeobject_CAST (self );
18901906
18911907 collections_state * state = find_module_state_by_def (Py_TYPE (deque ));
18921908 it = PyObject_GC_New (dequeiterobject , state -> dequeiter_type );
0 commit comments