Commit c89791c9 authored by Guido van Rossum's avatar Guido van Rossum

Fix for SF bug 551412. When _PyType_Lookup() is called on a type

whose tp_mro hasn't been initialized, it would dump core.  Fix this by
checking for NULL and calling PyType_Ready().  Will fix this in 2.2.1
too.
parent f0ed847f
......@@ -3019,7 +3019,23 @@ def string_exceptions():
except:
raise TestFailed, "string subclass allowed as exception"
def do_this_first():
if verbose:
print "Testing SF bug 551412 ..."
# This dumps core when SF bug 551412 isn't fixed --
# but only when test_descr.py is run separately.
# (That can't be helped -- as soon as PyType_Ready()
# is called for PyLong_Type, the bug is gone.)
class UserLong(object):
def __pow__(self, *args):
pass
try:
pow(0L, UserLong(), 0L)
except:
pass
def test_main():
do_this_first()
class_docstrings()
lists()
dicts()
......
......@@ -1221,6 +1221,12 @@ _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)
return NULL;
mro = type->tp_mro;
assert(mro != NULL);
}
assert(PyTuple_Check(mro));
n = PyTuple_GET_SIZE(mro);
for (i = 0; i < n; i++) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment