Index: Objects/abstract.c =================================================================== --- Objects/abstract.c (revision 66059) +++ Objects/abstract.c (working copy) @@ -3068,7 +3068,11 @@ { PyObject *result; assert(PyIter_Check(iter)); - result = (*iter->ob_type->tp_iternext)(iter); + if (*iter->ob_type->tp_iternext != NULL) + result = (*iter->ob_type->tp_iternext)(iter); + else { + return NULL; + } if (result == NULL && PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) Index: Objects/enumobject.c =================================================================== --- Objects/enumobject.c (revision 66059) +++ Objects/enumobject.c (working copy) @@ -127,7 +127,11 @@ PyObject *result = en->en_result; PyObject *it = en->en_sit; - next_item = (*Py_TYPE(it)->tp_iternext)(it); + if (*Py_TYPE(it)->tp_iternext != NULL) + next_item = (*Py_TYPE(it)->tp_iternext)(it); + else { + return NULL; + } if (next_item == NULL) return NULL;