From 8f01c5394dcce8f5d4e7102dacfcdea9d1f7b021 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Thu, 16 Jul 2009 01:16:09 +0000 Subject: Add destructor callbacks for polymorphic C types, and use their base dmnsn_delete_*() function. --- libdimension/object.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'libdimension/object.c') diff --git a/libdimension/object.c b/libdimension/object.c index 0556921..6b248ff 100644 --- a/libdimension/object.c +++ b/libdimension/object.c @@ -28,7 +28,8 @@ dmnsn_new_object() dmnsn_object *object = malloc(sizeof(dmnsn_object)); if (object) { object->texture = NULL; - object->trans = dmnsn_identity_matrix(); + object->trans = dmnsn_identity_matrix(); + object->free_fn = NULL; } return object; } @@ -37,5 +38,10 @@ dmnsn_new_object() void dmnsn_delete_object(dmnsn_object *object) { - free(object); + if (object) { + if (object->free_fn) { + (*object->free_fn)(object->ptr); + } + free(object); + } } -- cgit v1.2.3