summaryrefslogtreecommitdiffstats
path: root/libc-top-half/musl/src/search/tdestroy.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc-top-half/musl/src/search/tdestroy.c')
-rw-r--r--libc-top-half/musl/src/search/tdestroy.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/libc-top-half/musl/src/search/tdestroy.c b/libc-top-half/musl/src/search/tdestroy.c
new file mode 100644
index 0000000..699a901
--- /dev/null
+++ b/libc-top-half/musl/src/search/tdestroy.c
@@ -0,0 +1,16 @@
+#define _GNU_SOURCE
+#include <stdlib.h>
+#include <search.h>
+#include "tsearch.h"
+
+void tdestroy(void *root, void (*freekey)(void *))
+{
+ struct node *r = root;
+
+ if (r == 0)
+ return;
+ tdestroy(r->a[0], freekey);
+ tdestroy(r->a[1], freekey);
+ if (freekey) freekey((void *)r->key);
+ free(r);
+}