1 #include <ccan/tal/tal.h>
2 #include <ccan/tal/tal.c>
3 #include <ccan/tap/tap.h>
7 char *parent, *c[4], *p;
12 /* tal_free(NULL) works. */
13 ok1(tal_free(NULL) == NULL);
15 parent = tal(NULL, char);
17 ok1(tal_parent(parent) == NULL);
18 ok1(tal_parent(NULL) == NULL);
20 for (i = 0; i < 4; i++)
21 c[i] = tal(parent, char);
23 for (i = 0; i < 4; i++)
24 ok1(tal_parent(c[i]) == parent);
28 for (p = tal_first(parent); p; p = tal_next(parent, p)) {
39 ok1(tal_free(parent) == NULL);
41 parent = tal(NULL, char);
43 /* Test freeing in every order */
44 for (i = 0; i < 4; i++) {
45 for (j = 0; j < 4; j++)
46 c[j] = tal(parent, char);
49 debug_tal(to_tal_hdr(parent));
50 tal_free(c[(i+1) % 4]);
51 debug_tal(to_tal_hdr(parent));
52 tal_free(c[(i+2) % 4]);
53 debug_tal(to_tal_hdr(parent));
54 tal_free(c[(i+3) % 4]);
55 debug_tal(to_tal_hdr(parent));