Skip to content

Commit 3de6933

Browse files
Restore
1 parent 8c3de34 commit 3de6933

File tree

1 file changed

+18
-28
lines changed

1 file changed

+18
-28
lines changed

Modules/_collectionsmodule.c

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2101,24 +2101,20 @@ dequereviter_next_lock_held(dequeiterobject *it, dequeobject *deque)
21012101
}
21022102

21032103
static 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

21182114
static PyObject *
21192115
dequereviter_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

21532143
static 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

Comments
 (0)