Mercurial > cpython-lru_cache-weakref
diff Objects/typeobject.c @ 50754:e9748db47635 legacy-trunk
#3720: Interpreter crashes when an evil iterator removes its own next function.
Now the slot is filled with a function that always raises.
Will not backport: extensions compiled with 2.6.x would not run on 2.6.0.
| author | Amaury Forgeot d'Arc <amauryfa@gmail.com> |
|---|---|
| date | Mon, 12 Jan 2009 23:36:55 +0000 |
| parents | 73b9fe1c5397 |
| children | 27ba803bdea9 |
line wrap: on
line diff
--- a/Objects/typeobject.c Mon Jan 12 22:58:41 2009 +0000 +++ b/Objects/typeobject.c Mon Jan 12 23:36:55 2009 +0000 @@ -6090,8 +6090,12 @@ } do { descr = _PyType_Lookup(type, p->name_strobj); - if (descr == NULL) + if (descr == NULL) { + if (ptr == (void**)&type->tp_iternext) { + specific = _PyObject_NextNotImplemented; + } continue; + } if (Py_TYPE(descr) == &PyWrapperDescr_Type) { void **tptr = resolve_slotdups(type, p->name_strobj); if (tptr == NULL || tptr == ptr)
