From: Erlend Egeberg Aasland Date: Fri, 30 Apr 2021 10:07:02 +0000 (+0200) Subject: bpo-43973: object_set_class() checks Py_TPFLAGS_IMMUTABLETYPE (GH-25714) X-Git-Tag: v3.10.0b1~78 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b73b5fb9ea08156991a065c1696e8d8cf7622482;p=thirdparty%2FPython%2Fcpython.git bpo-43973: object_set_class() checks Py_TPFLAGS_IMMUTABLETYPE (GH-25714) Use Py_TPFLAGS_IMMUTABLETYPE to check for class assignments. --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 19d619fada0e..1f8e2572a2da 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -4737,10 +4737,10 @@ object_set_class(PyObject *self, PyObject *value, void *closure) */ if (!(PyType_IsSubtype(newto, &PyModule_Type) && PyType_IsSubtype(oldto, &PyModule_Type)) && - (!(newto->tp_flags & Py_TPFLAGS_HEAPTYPE) || - !(oldto->tp_flags & Py_TPFLAGS_HEAPTYPE))) { + (_PyType_HasFeature(newto, Py_TPFLAGS_IMMUTABLETYPE) || + _PyType_HasFeature(oldto, Py_TPFLAGS_IMMUTABLETYPE))) { PyErr_Format(PyExc_TypeError, - "__class__ assignment only supported for heap types " + "__class__ assignment only supported for mutable types " "or ModuleType subclasses"); return -1; }