// RUN: %clangxx_msan -O0 -g %s -o %t && %run %t // tdestroy is a GNU extension // UNSUPPORTED: netbsd, freebsd #include #include #include int compare(const void *pa, const void *pb) { int a = *(const int *)pa; int b = *(const int *)pb; if (a < b) return -1; else if (a > b) return 1; else return 0; } void myfreenode(void *p) { delete (int *)p; } int main(void) { void *root = NULL; for (int i = 0; i < 5; ++i) { int *p = new int(i); void *q = tsearch(p, &root, compare); if (q == NULL) exit(1); if (*(int **)q != p) delete p; } tdestroy(root, myfreenode); return 0; }