Avoid undefined behavior for removing elements that were not in the tree.

Originally committed as revision 15368 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer
2008-09-19 12:41:12 +00:00
parent 0354ddb71c
commit eed3607564
2 changed files with 7 additions and 6 deletions

View File

@@ -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);