mirror of
https://github.com/python/cpython.git
synced 2025-08-02 08:02:56 +00:00
#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.
This commit is contained in:
parent
f94d7fa5fb
commit
a40d573664
9 changed files with 47 additions and 67 deletions
|
@ -6090,8 +6090,12 @@ update_one_slot(PyTypeObject *type, slotdef *p)
|
|||
}
|
||||
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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue