@@ -2101,24 +2101,20 @@ dequereviter_next_lock_held(dequeiterobject *it, dequeobject *deque)
21012101}
21022102
21032103static PyObject *
2104- dequeiter_next (PyObject * op )
2104+ dequereviter_next (PyObject * self )
21052105{
21062106 PyObject * result ;
2107- dequeiterobject * it = dequeiterobject_CAST (op );
2108- // It's safe to access it->deque without holding the per-object lock for it
2109- // here; it->deque is only assigned during construction of it.
2110- dequeobject * deque = it -> deque ;
2111- Py_BEGIN_CRITICAL_SECTION2 (it , deque );
2112- result = dequeiter_next_lock_held (it , deque );
2107+ dequeiterobject * it = dequeiterobject_CAST (self );
2108+ Py_BEGIN_CRITICAL_SECTION2 (it , it -> deque );
2109+ result = dequereviter_next_lock_held (it , it -> deque );
21132110 Py_END_CRITICAL_SECTION2 ();
2114-
21152111 return result ;
21162112}
21172113
21182114static PyObject *
21192115dequereviter_new (PyTypeObject * type , PyObject * args , PyObject * kwds )
21202116{
2121- Py_ssize_t i , index = 0 ;
2117+ Py_ssize_t i , index = 0 ;
21222118 PyObject * deque ;
21232119 dequeiterobject * it ;
21242120 collections_state * state = get_module_state_by_cls (type );
@@ -2130,24 +2126,18 @@ dequereviter_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
21302126 if (!it )
21312127 return NULL ;
21322128 /* consume items from the queue */
2133- for (i = 0 ; i < index ; i ++ ) {
2129+ for (i = 0 ; i < index ; i ++ ) {
21342130 PyObject * item = dequereviter_next ((PyObject * )it );
2135- if (item ) {
2136- Py_DECREF (item );
2137- } else {
2138- /*
2139- * It's safe to read directly from it without acquiring the
2140- * per-object lock; the iterator isn't visible to any other threads
2141- * yet.
2142- */
2143- if (it -> counter ) {
2131+ if (item == NULL ) {
2132+ if (PyErr_Occurred ()) {
21442133 Py_DECREF (it );
21452134 return NULL ;
2146- } else
2147- break ;
2135+ }
2136+ break ;
21482137 }
2138+ Py_DECREF (item );
21492139 }
2150- return (PyObject * )it ;
2140+ return (PyObject * )it ;
21512141}
21522142
21532143static PyType_Slot dequereviter_slots [] = {
@@ -2598,9 +2588,9 @@ _collections__count_elements_impl(PyObject *module, PyObject *mapping,
25982588 Py_XDECREF (newval );
25992589 Py_XDECREF (bound_get );
26002590 if (PyErr_Occurred ())
2601- return NULL ;
2602- Py_RETURN_NONE ;
2603- }
2591+ return NULL ;
2592+ Py_RETURN_NONE ;
2593+ }
26042594
26052595/* Helper function for namedtuple() ************************************/
26062596
@@ -2628,7 +2618,7 @@ tuplegetter_new_impl(PyTypeObject *type, Py_ssize_t index, PyObject *doc)
26282618 _tuplegetterobject * self ;
26292619 self = (_tuplegetterobject * )type -> tp_alloc (type , 0 );
26302620 if (self == NULL ) {
2631- return NULL ;
2621+ return NULL ;
26322622 }
26332623 self -> index = index ;
26342624 self -> doc = Py_NewRef (doc );
@@ -2661,8 +2651,8 @@ tuplegetter_descr_get(PyObject *self, PyObject *obj, PyObject *type)
26612651 "doesn't apply to '%s' object" ,
26622652 index ,
26632653 Py_TYPE (obj )-> tp_name );
2664- return NULL ;
2665- }
2654+ return NULL ;
2655+ }
26662656
26672657 if (!valid_index (index , PyTuple_GET_SIZE (obj ))) {
26682658 PyErr_SetString (PyExc_IndexError , "tuple index out of range" );
0 commit comments