summaryrefslogtreecommitdiff
path: root/Python/bltinmodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/bltinmodule.c')
-rw-r--r--Python/bltinmodule.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 199ebc087d..585059f92f 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1048,27 +1048,28 @@ builtin_next(PyObject *self, PyObject *args)
return NULL;
if (!PyIter_Check(it)) {
PyErr_Format(PyExc_TypeError,
- "%.200s object is not an iterator", it->ob_type->tp_name);
+ "%.200s object is not an iterator",
+ it->ob_type->tp_name);
return NULL;
}
res = (*it->ob_type->tp_iternext)(it);
- if (res == NULL) {
- if (def) {
- if (PyErr_Occurred() &&
- !PyErr_ExceptionMatches(PyExc_StopIteration))
+ if (res != NULL) {
+ return res;
+ } else if (def != NULL) {
+ if (PyErr_Occurred()) {
+ if(!PyErr_ExceptionMatches(PyExc_StopIteration))
return NULL;
PyErr_Clear();
- Py_INCREF(def);
- return def;
- } else if (PyErr_Occurred()) {
- return NULL;
- } else {
- PyErr_SetNone(PyExc_StopIteration);
- return NULL;
}
+ Py_INCREF(def);
+ return def;
+ } else if (PyErr_Occurred()) {
+ return NULL;
+ } else {
+ PyErr_SetNone(PyExc_StopIteration);
+ return NULL;
}
- return res;
}
PyDoc_STRVAR(next_doc,