Make sure that tp_free frees the int the same way as tp_dealloc would.
This fixes the problem that Barry reported on python-dev:
   >>> 23000 .__class__ = bool
crashes in the deallocator.  This was because int inherited tp_free
from object, which uses the default allocator.

2.2. Bugfix candidate.
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 5886209..58a6beb 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -130,6 +130,13 @@
 		v->ob_type->tp_free((PyObject *)v);
 }
 
+static void
+int_free(PyIntObject *v)
+{
+	v->ob_type = (struct _typeobject *)free_list;
+	free_list = v;
+}
+
 long
 PyInt_AsLong(register PyObject *op)
 {
@@ -905,6 +912,7 @@
 	0,					/* tp_init */
 	0,					/* tp_alloc */
 	int_new,				/* tp_new */
+	(freefunc)int_free,           		/* tp_free */
 };
 
 void