Fix nits in builtin next().

This commit is contained in:
Georg Brandl 2008-04-30 19:47:01 +00:00
parent b041fdaf94
commit aaa6392a12
1 changed files with 14 additions and 13 deletions

View File

@ -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,