From 9ee4b94f51d19a37db3b93222b5e15c8379db78d Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 24 May 2002 18:47:47 +0000 Subject: [PATCH] Add a safeguard against setting the class to something with a different free or alloc slot. --- Objects/typeobject.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 9a20fa4e049..61cbeae3777 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))