Mercurial > cpython-lru_cache-weakref
diff Objects/typeobject.c @ 19803:32cfce4d83dc legacy-trunk
PyType_IsSubtype(): test tp_flags for HAVE_CLASS bit before accessing
a->tp_mro. If a doesn't have class, it's considered a subclass only
of itself or of 'object'.
This one fix is enough to prevent the ExtensionClass test suite from
dumping core, but that doesn't say much (it's a rather small test
suite). Also note that for ExtensionClass-defined types, a different
subclass test may be needed. But I haven't checked whether
PyType_IsSubtype() is actually used in situations where this matters
-- probably it doesn't, since we also don't check for classic classes.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Fri, 07 Sep 2001 18:52:13 +0000 |
| parents | ae056f114974 |
| children | 0584c9132525 |
line wrap: on
line diff
--- a/Objects/typeobject.c Fri Sep 07 18:23:30 2001 +0000 +++ b/Objects/typeobject.c Fri Sep 07 18:52:13 2001 +0000 @@ -273,6 +273,9 @@ { PyObject *mro; + if (!(a->tp_flags & Py_TPFLAGS_HAVE_CLASS)) + return b == a || b == &PyBaseObject_Type; + mro = a->tp_mro; if (mro != NULL) { /* Deal with multiple inheritance without recursion
