rbtree: fixed some memory leaks.
This commit is contained in:
parent
baa6cbb316
commit
731f19553a
2 changed files with 8 additions and 4 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue