]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Make sure av_tree_enumerate() enumerates left->right.
authormichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 14 Nov 2009 11:19:08 +0000 (11:19 +0000)
committermichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 14 Nov 2009 11:19:08 +0000 (11:19 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@20535 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavutil/tree.c

index cce1d3109089842923f3a82655f82b5ccf5ff422..07814536852e887df85c89fd4aa48f8cdebe3054 100644 (file)
@@ -136,10 +136,11 @@ void av_tree_destroy(AVTreeNode *t){
 }
 
 #if 0
-void av_tree_enumerate(AVTreeNode *t, void *opaque, int (*f)(void *opaque, void *elem)){
-    int v= f(opaque, t->elem);
-    if(v>=0) av_tree_enumerate(t->child[0], opaque, f);
-    if(v<=0) av_tree_enumerate(t->child[1], opaque, f);
+void av_tree_enumerate(AVTreeNode *t, void *opaque, int (*cmp)(void *opaque, void *elem), int (*enu)(void *opaque, void *elem)){
+    int v= cmp ? cmp(opaque, t->elem) : 0;
+    if(v>=0) av_tree_enumerate(t->child[0], opaque, cmp, enu);
+    if(v==0) enu(opaque, t->elem);
+    if(v<=0) av_tree_enumerate(t->child[1], opaque, cmp, enu);
 }
 #endif