projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix strftime %s not to zero pad with default width=2
[musl]
/
src
/
search
/
tsearch_avl.c
diff --git
a/src/search/tsearch_avl.c
b/src/search/tsearch_avl.c
index
b56159b
..
8620092
100644
(file)
--- a/
src/search/tsearch_avl.c
+++ b/
src/search/tsearch_avl.c
@@
-138,9
+138,13
@@
static struct node *remove(struct node **n, const void *k,
void *tdelete(const void *restrict key, void **restrict rootp,
int(*compar)(const void *, const void *))
{
void *tdelete(const void *restrict key, void **restrict rootp,
int(*compar)(const void *, const void *))
{
+ struct node *n = *rootp;
+ struct node *ret;
/* last argument is arbitrary non-null pointer
which is returned when the root node is deleted */
/* last argument is arbitrary non-null pointer
which is returned when the root node is deleted */
- return remove((void*)rootp, key, compar, *rootp);
+ ret = remove(&n, key, compar, n);
+ *rootp = n;
+ return ret;
}
void *tfind(const void *key, void *const *rootp,
}
void *tfind(const void *key, void *const *rootp,
@@
-153,7
+157,11
@@
void *tsearch(const void *key, void **rootp,
int (*compar)(const void *, const void *))
{
int new = 0;
int (*compar)(const void *, const void *))
{
int new = 0;
- return insert((void*)rootp, key, compar, &new);
+ struct node *n = *rootp;
+ struct node *ret;
+ ret = insert(&n, key, compar, &new);
+ *rootp = n;
+ return ret;
}
static void walk(const struct node *r, void (*action)(const void *, VISIT, int), int d)
}
static void walk(const struct node *r, void (*action)(const void *, VISIT, int), int d)