Mercurial > libavutil.hg
changeset 788:f0e08dd7d583 libavutil
Make sure av_tree_enumerate() enumerates left->right.
author | michael |
---|---|
date | Sat, 14 Nov 2009 11:19:08 +0000 |
parents | 664b42a6cf75 |
children | 2f8483c14783 |
files | tree.c |
diffstat | 1 files changed, 5 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/tree.c Wed Nov 11 00:02:36 2009 +0000 +++ b/tree.c Sat Nov 14 11:19:08 2009 +0000 @@ -136,10 +136,11 @@ } #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