PyType_Ready(): initialize the base class a bit earlier, so that if we

copy the metatype from the base, the base actually has one!
This commit is contained in:
Guido van Rossum 2002-08-14 17:26:30 +00:00
parent 48d52c0fcc
commit 323a9cfc83

View file

@ -2294,6 +2294,12 @@ PyType_Ready(PyTypeObject *type)
if (base == NULL && type != &PyBaseObject_Type)
base = type->tp_base = &PyBaseObject_Type;
/* Initialize the base class */
if (base && base->tp_dict == NULL) {
if (PyType_Ready(base) < 0)
goto error;
}
/* Initialize ob_type if NULL. This means extensions that want to be
compilable separately on Windows can call PyType_Ready() instead of
initializing the ob_type field of their type objects. */
@ -2312,12 +2318,6 @@ PyType_Ready(PyTypeObject *type)
type->tp_bases = bases;
}
/* Initialize the base class */
if (base && base->tp_dict == NULL) {
if (PyType_Ready(base) < 0)
goto error;
}
/* Initialize tp_dict */
dict = type->tp_dict;
if (dict == NULL) {