From 7f70df52fafb1bbb01926ef0732f80aeb3ef90c2 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 5 Sep 2011 16:58:00 +0000 Subject: Fix memory leaks git-svn-id: http://svn.drobilla.net/zix/trunk@4 df6676b4-ccc9-40e5-b5d6-7c4628a128e3 --- src/tree.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/tree.c b/src/tree.c index d319f1d..6d84938 100644 --- a/src/tree.c +++ b/src/tree.c @@ -553,10 +553,10 @@ ZIX_API int zix_tree_remove(ZixTree* t, ZixTreeIter ti) { - ZixTreeNode* n = ti; - ZixTreeNode** pp = NULL; // parent pointer - ZixTreeNode* to_balance = n->parent; // lowest node to start rebalace at - int8_t d_balance = 0; // delta(balance) for n->parent + ZixTreeNode* const n = ti; + ZixTreeNode** pp = NULL; // parent pointer + ZixTreeNode* to_balance = n->parent; // lowest node to start rebalace at + int8_t d_balance = 0; // delta(balance) for n->parent #ifdef ZIX_TREE_DUMP printf("*** REMOVE %ld\n", (intptr_t)n->data); @@ -564,6 +564,7 @@ zix_tree_remove(ZixTree* t, ZixTreeIter ti) if ((n == t->root) && !n->left && !n->right) { t->root = NULL; + free(n); return ZIX_STATUS_SUCCESS; } @@ -687,6 +688,8 @@ zix_tree_remove(ZixTree* t, ZixTreeIter ti) DUMP(t); + free(n); + #ifdef ZIX_TREE_VERIFY if (!verify(t, t->root)) { return ZIX_STATUS_ERROR; -- cgit v1.2.1