summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavutil/tree.c10
-rw-r--r--libavutil/tree.h3
2 files changed, 7 insertions, 6 deletions
diff --git a/libavutil/tree.c b/libavutil/tree.c
index cb442ff4b0..64653aaccb 100644
--- a/libavutil/tree.c
+++ b/libavutil/tree.c
@@ -119,8 +119,11 @@ void *av_tree_insert(AVTreeNode **tp, void *key, int (*cmp)(void *key, const voi
return ret;
}else{
*tp= *next; *next= NULL;
- (*tp)->elem= key;
- return NULL;
+ if(*tp){
+ (*tp)->elem= key;
+ return NULL;
+ }else
+ return key;
}
}
@@ -188,8 +191,7 @@ int main(void){
av_tree_insert(&root, (void*)(j+1), cmp, &node);
j= (random()%86294);
- k= av_tree_find(root, (void*)(j+1), cmp, NULL);
- if(k){
+ {
AVTreeNode *node2=NULL;
av_log(NULL, AV_LOG_ERROR, "removing %4d\n", j);
av_tree_insert(&root, (void*)(j+1), cmp, &node2);
diff --git a/libavutil/tree.h b/libavutil/tree.h
index c457234b09..ed6611c520 100644
--- a/libavutil/tree.h
+++ b/libavutil/tree.h
@@ -45,8 +45,7 @@ void *av_tree_find(const struct AVTreeNode *root, void *key, int (*cmp)(void *ke
/**
* Inserts or removes an element.
- * If *next is NULL then the element supplied will be removed, if no such
- * element exists behavior is undefined.
+ * If *next is NULL then the element supplied will be removed if it exists.
* If *next is not NULL then the element supplied will be inserted, unless
* it already exists in the tree.
* @param rootp A pointer to a pointer to the root node of the tree. Note that