Always use self->ob_type->tp_free when freeing an object.
diff --git a/Tools/bgen/bgen/bgenObjectDefinition.py b/Tools/bgen/bgen/bgenObjectDefinition.py
index 510b9b8..fd60d61 100644
--- a/Tools/bgen/bgen/bgenObjectDefinition.py
+++ b/Tools/bgen/bgen/bgenObjectDefinition.py
@@ -137,7 +137,7 @@
 		if self.basetype:
 			Output("%s.tp_dealloc(self)", self.basetype)
 		else:
-			Output("PyObject_Del(self);")
+			Output("self->ob_type->tp_free((PyObject *)self);")
 		OutRbrace()
 
 	def outputCleanupStructMembers(self):