@@ -2553,7 +2553,10 @@ list_index_impl(PyListObject *self, PyObject *value, Py_ssize_t start,
25532553 stop = 0 ;
25542554 }
25552555 for (i = start ; i < stop && i < Py_SIZE (self ); i ++ ) {
2556- int cmp = PyObject_RichCompareBool (self -> ob_item [i ], value , Py_EQ );
2556+ PyObject * obj = self -> ob_item [i ];
2557+ Py_INCREF (obj );
2558+ int cmp = PyObject_RichCompareBool (obj , value , Py_EQ );
2559+ Py_DECREF (obj );
25572560 if (cmp > 0 )
25582561 return PyLong_FromSsize_t (i );
25592562 else if (cmp < 0 )
@@ -2580,7 +2583,10 @@ list_count(PyListObject *self, PyObject *value)
25802583 Py_ssize_t i ;
25812584
25822585 for (i = 0 ; i < Py_SIZE (self ); i ++ ) {
2583- int cmp = PyObject_RichCompareBool (self -> ob_item [i ], value , Py_EQ );
2586+ PyObject * obj = self -> ob_item [i ];
2587+ Py_INCREF (obj );
2588+ int cmp = PyObject_RichCompareBool (obj , value , Py_EQ );
2589+ Py_DECREF (obj );
25842590 if (cmp > 0 )
25852591 count ++ ;
25862592 else if (cmp < 0 )
@@ -2607,7 +2613,10 @@ list_remove(PyListObject *self, PyObject *value)
26072613 Py_ssize_t i ;
26082614
26092615 for (i = 0 ; i < Py_SIZE (self ); i ++ ) {
2610- int cmp = PyObject_RichCompareBool (self -> ob_item [i ], value , Py_EQ );
2616+ PyObject * obj = self -> ob_item [i ];
2617+ Py_INCREF (obj );
2618+ int cmp = PyObject_RichCompareBool (obj , value , Py_EQ );
2619+ Py_DECREF (obj );
26112620 if (cmp > 0 ) {
26122621 if (list_ass_slice (self , i , i + 1 ,
26132622 (PyObject * )NULL ) == 0 )
0 commit comments