From 731f19553a80e7107d4fa73348bbad8b0a81777f Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 5 Nov 2010 14:08:43 +0100 Subject: [PATCH] rbtree: fixed some memory leaks. --- src/rbtree.c | 3 ++- test/t_rbtree.c | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/rbtree.c b/src/rbtree.c index 7d8cfa5..e6037ce 100644 --- a/src/rbtree.c +++ b/src/rbtree.c @@ -198,6 +198,7 @@ int rbtree_insert(rbtree *tree, uint key, void *data, size_t len) { tree->root = node_alloc(key, data, len); if (tree->root == NULL) return 0; + inserted = 1; goto done; } @@ -326,7 +327,7 @@ void* rbtree_delete(rbtree *tree, uint key) { ret = f->data; if (f != q) { f->key = q->key; - f->data = xmemdup(q->data, q->len); + f->data = q->data; f->len = q->len; } swap(p, 1, q) = swap(q, 0, NULL); diff --git a/test/t_rbtree.c b/test/t_rbtree.c index fca086d..bf39a0a 100644 --- a/test/t_rbtree.c +++ b/test/t_rbtree.c @@ -80,21 +80,23 @@ void test_insert() { data = utest_ran_string(32); /* insert into rbtree and assert it */ - ret = rbtree_insert(&tree, ckey, data, 32); + ret = rbtree_insert(&tree, ckey, data, 33); rb_assert(tree.root); dprint("INSERT: %i %s\n", ckey, data); /* ignore duplicate key */ - if (ret == -1) + if (ret == -1) { + free(data); continue; + } keyref[i] = ckey; dataref[i] = data; if (i == ((NODES/2))) { search_key = ckey; - memcpy(&search_data, data, 32); + memcpy(&search_data, data, 33); } i++; @@ -119,6 +121,7 @@ void test_delete() { data = rbtree_delete(&tree, key); assert_string(data, dref); + free(data); rb_assert(tree.root); } }