Implement av_tree_destroy_free_elem() to destroy a tree and free all the
authorVitor Sessak <vitor1001@gmail.com>
Sun, 28 Feb 2010 20:48:42 +0000 (20:48 +0000)
committerVitor Sessak <vitor1001@gmail.com>
Sun, 28 Feb 2010 20:48:42 +0000 (20:48 +0000)
values stored on it.

Originally committed as revision 22119 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavutil/tree.c
libavutil/tree.h

index 4b78764..261e306 100644 (file)
@@ -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){
index e96d1fa..e3441c3 100644 (file)
@@ -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 */