diff options
| author | William Casarin <jb55@jb55.com> | 2018-07-09 12:10:32 -0700 |
|---|---|---|
| committer | William Casarin <jb55@jb55.com> | 2018-07-09 12:10:32 -0700 |
| commit | 1b8fbbd843ddeb5fc81c9303db9c590a436d499b (patch) | |
| tree | a7227dfe8e4fbaee7b1e0b58b24994dce8078f3f /ccan/tal/test/run-groups-grow.c | |
| parent | 37a9cdd2e80386f2c94e14e4f511284ae14c745a (diff) | |
progress
Diffstat (limited to 'ccan/tal/test/run-groups-grow.c')
| -rw-r--r-- | ccan/tal/test/run-groups-grow.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/ccan/tal/test/run-groups-grow.c b/ccan/tal/test/run-groups-grow.c new file mode 100644 index 0000000..ea379c0 --- /dev/null +++ b/ccan/tal/test/run-groups-grow.c @@ -0,0 +1,48 @@ +#define CCAN_TAL_DEBUG +#include <ccan/tal/tal.h> +#include <ccan/tal/tal.c> +#include <ccan/tap/tap.h> + +static size_t num_allocated; + +static void *alloc_account(size_t len) +{ + num_allocated++; + return malloc(len); +} + +static void free_account(void *p) +{ + num_allocated--; + return free(p); +} + +#define NUM_ALLOCS 1000 + +int main(void) +{ + void *p, *c[NUM_ALLOCS]; + int i; + size_t allocated_after_first; + + plan_tests(1); + + tal_set_backend(alloc_account, NULL, free_account, NULL); + + p = tal(NULL, char); + c[0] = tal(p, char); + + allocated_after_first = num_allocated; + for (i = 1; i < NUM_ALLOCS; i++) + c[i] = tal(p, char); + + /* Now free them all. */ + for (i = 0; i < NUM_ALLOCS; i++) + tal_free(c[i]); + + /* We can expect some residue from having any child, but limited! */ + ok1(num_allocated <= allocated_after_first); + tal_free(p); + tal_cleanup(); + return exit_status(); +} |
