The branch main has been updated by kib:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=3204c097fd08436805f059c0d7f676d29ee9bb62

commit 3204c097fd08436805f059c0d7f676d29ee9bb62
Author:     Konstantin Belousov <[email protected]>
AuthorDate: 2025-12-26 22:00:09 +0000
Commit:     Konstantin Belousov <[email protected]>
CommitDate: 2025-12-29 17:18:55 +0000

    tdestroy(3): add tests
    
    Reviewed by:    alc, emaste
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D54365
---
 lib/libc/tests/stdlib/tsearch_test.c | 65 ++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)

diff --git a/lib/libc/tests/stdlib/tsearch_test.c 
b/lib/libc/tests/stdlib/tsearch_test.c
index ee9deec588cb..f42729e5e75c 100644
--- a/lib/libc/tests/stdlib/tsearch_test.c
+++ b/lib/libc/tests/stdlib/tsearch_test.c
@@ -147,10 +147,75 @@ ATF_TC_BODY(tsearch_test, tc)
        ATF_CHECK_EQ(NULL, root);
 }
 
+static int nodes;
+
+struct my_data {
+       int key;
+};
+
+static struct my_data *
+new_my_data(int key)
+{
+       struct my_data *res;
+
+       res = malloc(sizeof(struct my_data));
+       res->key = key;
+       nodes++;
+       return (res);
+}
+
+void
+free_my_data(void *mdp)
+{
+       free(mdp);
+       nodes--;
+}
+
+static int
+compare_my_data(const void *mdp1, const void *mdp2)
+{
+       const struct my_data *md1, *md2;
+
+       md1 = mdp1;
+       md2 = mdp2;
+
+       return (md1->key - md2->key);
+}
+
+static posix_tnode *root = NULL;
+
+static void
+insert(int x)
+{
+       struct my_data *md;
+
+       md = new_my_data(x);
+       tsearch(md, &root, compare_my_data);
+}
+
+ATF_TC_WITHOUT_HEAD(tdestroy_test);
+ATF_TC_BODY(tdestroy_test, tc)
+{
+       root = NULL;
+       insert(1);
+       insert(100);
+       insert(1000);
+       insert(5);
+       insert(6);
+       insert(12);
+       insert(2000);
+       insert(3);
+
+       ATF_CHECK_EQ(8, nodes);
+       tdestroy(root, free_my_data);
+       ATF_CHECK_EQ(0, nodes);
+}
+
 ATF_TP_ADD_TCS(tp)
 {
 
        ATF_TP_ADD_TC(tp, tsearch_test);
+       ATF_TP_ADD_TC(tp, tdestroy_test);
 
        return (atf_no_error());
 }

Reply via email to