From b73b5fb9ea08156991a065c1696e8d8cf7622482 Mon Sep 17 00:00:00 2001 From: Erlend Egeberg Aasland Date: Fri, 30 Apr 2021 12:07:02 +0200 Subject: bpo-43973: object_set_class() checks Py_TPFLAGS_IMMUTABLETYPE (GH-25714) Use Py_TPFLAGS_IMMUTABLETYPE to check for class assignments. --- Objects/typeobject.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 19d619f..1f8e257 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; } -- cgit v0.12