# HG changeset patch # User vitor # Date 1267390122 0 # Node ID ae61fe3a97b91e8523281432f11975da88302bdb # Parent dc1f09cd2195be2da6611efb794f3dafaf73ca71 Implement av_tree_destroy_free_elem() to destroy a tree and free all the values stored on it. diff -r dc1f09cd2195 -r ae61fe3a97b9 tree.c --- a/tree.c Sun Feb 28 02:32:16 2010 +0000 +++ b/tree.c Sun Feb 28 20:48:42 2010 +0000 @@ -135,6 +135,15 @@ } } +void av_tree_destroy_free_elem(AVTreeNode *t){ + if(t){ + av_tree_destroy_free_elem(t->child[0]); + av_tree_destroy_free_elem(t->child[1]); + av_free(t->elem); + av_free(t); + } +} + #if 0 void av_tree_enumerate(AVTreeNode *t, void *opaque, int (*cmp)(void *opaque, void *elem), int (*enu)(void *opaque, void *elem)){ if(t){ diff -r dc1f09cd2195 -r ae61fe3a97b9 tree.h --- a/tree.h Sun Feb 28 02:32:16 2010 +0000 +++ b/tree.h Sun Feb 28 20:48:42 2010 +0000 @@ -78,5 +78,6 @@ */ void *av_tree_insert(struct AVTreeNode **rootp, void *key, int (*cmp)(void *key, const void *b), struct AVTreeNode **next); void av_tree_destroy(struct AVTreeNode *t); +void av_tree_destroy_free_elem(struct AVTreeNode *t); #endif /* AVUTIL_TREE_H */