mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Simplify _count_elements() in _collections
PyIter_Next() cannot return a PyExc_StopIteration: it clears this exception.
This commit is contained in:
parent
52d8fb5c54
commit
a154b5cea4
1 changed files with 4 additions and 12 deletions
|
@ -1552,12 +1552,8 @@ _count_elements(PyObject *self, PyObject *args)
|
||||||
if (PyDict_CheckExact(mapping)) {
|
if (PyDict_CheckExact(mapping)) {
|
||||||
while (1) {
|
while (1) {
|
||||||
key = PyIter_Next(it);
|
key = PyIter_Next(it);
|
||||||
if (key == NULL) {
|
if (key == NULL)
|
||||||
if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration))
|
break;
|
||||||
PyErr_Clear();
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
oldval = PyDict_GetItem(mapping, key);
|
oldval = PyDict_GetItem(mapping, key);
|
||||||
if (oldval == NULL) {
|
if (oldval == NULL) {
|
||||||
if (PyDict_SetItem(mapping, key, one) == -1)
|
if (PyDict_SetItem(mapping, key, one) == -1)
|
||||||
|
@ -1575,12 +1571,8 @@ _count_elements(PyObject *self, PyObject *args)
|
||||||
} else {
|
} else {
|
||||||
while (1) {
|
while (1) {
|
||||||
key = PyIter_Next(it);
|
key = PyIter_Next(it);
|
||||||
if (key == NULL) {
|
if (key == NULL)
|
||||||
if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration))
|
break;
|
||||||
PyErr_Clear();
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
oldval = PyObject_GetItem(mapping, key);
|
oldval = PyObject_GetItem(mapping, key);
|
||||||
if (oldval == NULL) {
|
if (oldval == NULL) {
|
||||||
if (!PyErr_Occurred() || !PyErr_ExceptionMatches(PyExc_KeyError))
|
if (!PyErr_Occurred() || !PyErr_ExceptionMatches(PyExc_KeyError))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue