1// RUN: %clangxx_msan -O0 -g %s -o %t && %run %t
2
3#include <assert.h>
4#include <search.h>
5#include <stdlib.h>
6
7int compare(const void *pa, const void *pb) {
8  int a = *(const int *)pa;
9  int b = *(const int *)pb;
10  if (a < b)
11    return -1;
12  else if (a > b)
13    return 1;
14  else
15    return 0;
16}
17
18void myfreenode(void *p) {
19  delete (int *)p;
20}
21
22int main(void) {
23  void *root = NULL;
24  for (int i = 0; i < 5; ++i) {
25    int *p = new int(i);
26    void *q = tsearch(p, &root, compare);
27    if (q == NULL)
28      exit(1);
29    if (*(int **)q != p)
30      delete p;
31  }
32
33  tdestroy(root, myfreenode);
34
35  return 0;
36}
37