1.1 --- a/src/avl.c Thu May 03 10:09:49 2018 +0200 1.2 +++ b/src/avl.c Thu May 03 10:44:33 2018 +0200 1.3 @@ -136,6 +136,23 @@ 1.4 alfree(al, tree); 1.5 } 1.6 1.7 +static void ucx_avl_free_content_node(UcxAllocator *al, UcxAVLNode *node, 1.8 + ucx_destructor destr) { 1.9 + if (node) { 1.10 + ucx_avl_free_content_node(al, node->left, destr); 1.11 + ucx_avl_free_content_node(al, node->right, destr); 1.12 + if (destr) { 1.13 + destr(node->value); 1.14 + } else { 1.15 + alfree(al, node->value); 1.16 + } 1.17 + } 1.18 +} 1.19 + 1.20 +void ucx_avl_free_content(UcxAVLTree *tree, ucx_destructor destr) { 1.21 + ucx_avl_free_content_node(tree->allocator, tree->root, destr); 1.22 +} 1.23 + 1.24 UcxAVLNode *ucx_avl_get_node(UcxAVLTree *tree, intptr_t key) { 1.25 UcxAVLNode *n = tree->root; 1.26 int cmpresult;