mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Address the residual issue with the fix for SF 551412 in
_PyType_Lookup(). Decided to clear the error condition in the unfortunate but unlikely case that PyType_Ready() fails. Will fix in 2.2.x too.
This commit is contained in:
parent
155a34d2e5
commit
b65c65b301
1 changed files with 11 additions and 1 deletions
|
@ -1222,8 +1222,18 @@ _PyType_Lookup(PyTypeObject *type, PyObject *name)
|
|||
/* Look in tp_dict of types in MRO */
|
||||
mro = type->tp_mro;
|
||||
if (mro == NULL) {
|
||||
if (PyType_Ready(type) < 0)
|
||||
if (PyType_Ready(type) < 0) {
|
||||
/* It's not ideal to clear the error condition,
|
||||
but this function is documented as not setting
|
||||
an exception, and I don't want to change that.
|
||||
When PyType_Ready() can't proceed, it won't
|
||||
set the "ready" flag, so future attempts to ready
|
||||
the same type will call it again -- hopefully
|
||||
in a context that propagates the exception out.
|
||||
*/
|
||||
PyErr_Clear();
|
||||
return NULL;
|
||||
}
|
||||
mro = type->tp_mro;
|
||||
assert(mro != NULL);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue