diff options
author | Vitor Sessak <vitor1001@gmail.com> | 2010-02-28 20:48:42 +0000 |
---|---|---|
committer | Vitor Sessak <vitor1001@gmail.com> | 2010-02-28 20:48:42 +0000 |
commit | fee6faa2b67fca0cf0889165cfa64b02fc8d395b (patch) | |
tree | f5a751a7c4b59b7a46f3ec1d8fe4a201f364968e | |
parent | a882cf9c219f7622686036ce891e13717559055a (diff) | |
download | ffmpeg-fee6faa2b67fca0cf0889165cfa64b02fc8d395b.tar.gz |
Implement av_tree_destroy_free_elem() to destroy a tree and free all the
values stored on it.
Originally committed as revision 22119 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavutil/tree.c | 9 | ||||
-rw-r--r-- | libavutil/tree.h | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/libavutil/tree.c b/libavutil/tree.c index 4b78764628..261e306b8a 100644 --- a/libavutil/tree.c +++ b/libavutil/tree.c @@ -135,6 +135,15 @@ void av_tree_destroy(AVTreeNode *t){ } } +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 --git a/libavutil/tree.h b/libavutil/tree.h index e96d1fa12e..e3441c3392 100644 --- a/libavutil/tree.h +++ b/libavutil/tree.h @@ -78,5 +78,6 @@ void *av_tree_find(const struct AVTreeNode *root, void *key, int (*cmp)(void *ke */ 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 */ |