1 #include "talloc/talloc.c"
5 static int ext_alloc_count, ext_free_count, ext_realloc_count;
6 static void *expected_parent;
8 static void *ext_alloc(void *parent, size_t size)
10 ok1(parent == expected_parent);
15 static void ext_free(void *ptr, void *parent)
17 ok1(parent == expected_parent);
22 static void *ext_realloc(void *ptr, void *parent, size_t size)
24 ok1(parent == expected_parent);
26 return realloc(ptr, size);
34 talloc_external_enable(ext_alloc, ext_free, ext_realloc);
35 head = talloc(NULL, char);
37 expected_parent = head;
39 talloc_mark_external(head);
41 p = talloc_array(head, char, 1);
42 ok1(ext_alloc_count == 1);
45 /* Child is also externally allocated */
48 ok1(ext_alloc_count == 2);
50 expected_parent = head;
51 p = talloc_realloc(NULL, p, char, 1000);
52 ok1(ext_realloc_count == 1);
57 ok1(ext_free_count == 1);
59 expected_parent = head;
61 ok1(ext_free_count == 2);