diff --git a/include/search.h b/include/search.h index 75f59bf2d1a7..f0ef44357533 100644 --- a/include/search.h +++ b/include/search.h @@ -44,7 +44,8 @@ __BEGIN_DECLS int hcreate(size_t); void hdestroy(void); ENTRY *hsearch(ENTRY, ACTION); -void *tdelete(const void *, void **, int (*)(const void *, const void *)); +void *tdelete(const void *__restrict, void **__restrict, + int (*)(const void *, const void *)); void *tfind(const void *, void **, int (*)(const void *, const void *)); void *tsearch(const void *, void **, int (*)(const void *, const void *)); void twalk(const void *, void (*)(const void *, VISIT, int)); diff --git a/lib/libc/stdlib/tdelete.c b/lib/libc/stdlib/tdelete.c index 32dc298c6ea6..5729bd5aa33e 100644 --- a/lib/libc/stdlib/tdelete.c +++ b/lib/libc/stdlib/tdelete.c @@ -25,16 +25,20 @@ __FBSDID("$FreeBSD$"); #include -/* delete node with given key */ +/* + * delete node with given key + * + * vkey: key to be deleted + * vrootp: address of the root of the tree + * compar: function to carry out node comparisons + */ void * -tdelete(vkey, vrootp, compar) - const void *vkey; /* key to be deleted */ - void **vrootp; /* address of the root of tree */ - int (*compar)(const void *, const void *); +tdelete(const void *__restrict vkey, void **__restrict vrootp, + int (*compar)(const void *, const void *)) { node_t **rootp = (node_t **)vrootp; node_t *p, *q, *r; - int cmp; + int cmp; if (rootp == NULL || (p = *rootp) == NULL) return NULL; diff --git a/lib/libc/stdlib/tsearch.3 b/lib/libc/stdlib/tsearch.3 index 87a2571bc15f..06ff72098a98 100644 --- a/lib/libc/stdlib/tsearch.3 +++ b/lib/libc/stdlib/tsearch.3 @@ -36,7 +36,7 @@ .Sh SYNOPSIS .In search.h .Ft void * -.Fn tdelete "const void *key" "void **rootp" "int (*compar) (const void *, const void *)" +.Fn tdelete "const void *restrict key" "void **restrict rootp" "int (*compar) (const void *, const void *)" .Ft void * .Fn tfind "const void *key" "void **rootp" "int (*compar) (const void *, const void *)" .Ft void *