From: Guido van Rossum Date: Wed, 14 Aug 2002 17:26:30 +0000 (+0000) Subject: PyType_Ready(): initialize the base class a bit earlier, so that if we X-Git-Tag: v2.3c1~4468 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=323a9cfc8384adca677923cf3c65ad62920c76fa;p=python PyType_Ready(): initialize the base class a bit earlier, so that if we copy the metatype from the base, the base actually has one! --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 62f2822a84..145923a2ca 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -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) {