blob: 7570564a3e5af9f5f82454694a300264f76f3e28 [file] [log] [blame]
#include <stdio.h>
#include <stdlib.h>
#include "../memcheck.h"
struct foo {
struct foo *l, *r;
};
struct foo *mk(struct foo *l, struct foo *r)
{
struct foo *f = malloc(sizeof(*f));
f->l = l;
f->r = r;
return f;
}
int main()
{
struct foo *volatile a, *volatile b, *volatile c;
b = mk(mk(0, 0), 0);
/* Partially leaked tree structure */
a = mk(mk(mk(mk(mk(0, 0), 0), mk(mk(0, 0), b)), mk(0, 0)), mk(0,0));
a = NULL;
VALGRIND_DO_LEAK_CHECK;
b = NULL; /* now leak old b */
/* Completely leaked, but part of the structure is shared */
b = mk(0,0);
b->l = b;
b->r = b;
a = mk(b,b);
c = mk(b,b);
a = b = c = 0;
VALGRIND_DO_LEAK_CHECK;
return 0;
}