From: Guido van Rossum Date: Fri, 24 May 2002 18:47:47 +0000 (+0000) Subject: Add a safeguard against setting the class to something with a X-Git-Tag: v2.3c1~5589 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9ee4b94f51d19a37db3b93222b5e15c8379db78d;p=python Add a safeguard against setting the class to something with a different free or alloc slot. --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 9a20fa4e04..61cbeae377 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1622,6 +1622,16 @@ object_set_class(PyObject *self, PyObject *value, void *closure) return -1; } new = (PyTypeObject *)value; + if (new->tp_dealloc != old->tp_dealloc || + new->tp_free != old->tp_free) + { + PyErr_Format(PyExc_TypeError, + "__class__ assignment: " + "'%s' deallocator differs from '%s'", + new->tp_name, + old->tp_name); + return -1; + } newbase = new; oldbase = old; while (equiv_structs(newbase, newbase->tp_base))