From e51389d68ef2e152054d987d7a99930bce180954 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Tue, 23 Mar 2010 17:35:53 -0400 Subject: Implement macro support. --- dimension/parse.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'dimension/parse.c') diff --git a/dimension/parse.c b/dimension/parse.c index 4008fcf..c568271 100644 --- a/dimension/parse.c +++ b/dimension/parse.c @@ -338,6 +338,7 @@ dmnsn_new_astnode(dmnsn_astnode_type type) .type = type, .children = NULL, .ptr = NULL, + .free_fn = NULL, .refcount = malloc(sizeof(unsigned int)), .filename = "", .line = -1, @@ -479,7 +480,11 @@ dmnsn_delete_astnode(dmnsn_astnode astnode) { if (*astnode.refcount <= 1) { dmnsn_delete_astree(astnode.children); - free(astnode.ptr); + if (astnode.free_fn) { + (*astnode.free_fn)(astnode.ptr); + } else { + free(astnode.ptr); + } free(astnode.refcount); } else { --*astnode.refcount; -- cgit v1.2.3