diff -r c27269c0d619 Objects/typeobject.c --- a/Objects/typeobject.c Wed Nov 09 09:43:37 2016 -0500 +++ b/Objects/typeobject.c Wed Nov 09 12:48:42 2016 -0500 @@ -2501,14 +2501,15 @@ Py_INCREF(name); et->ht_name = name; et->ht_slots = slots; - slots = NULL; /* Initialize tp_flags */ type->tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_FINALIZE; - if (base->tp_flags & Py_TPFLAGS_HAVE_GC) + if ((base->tp_flags & Py_TPFLAGS_HAVE_GC) || slots != NULL) type->tp_flags |= Py_TPFLAGS_HAVE_GC; + slots = NULL; + /* Initialize essential fields */ type->tp_as_async = &et->as_async; type->tp_as_number = &et->as_number;