X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftalloc%2Ftest%2Frun-external-alloc.c;h=fb1e17e95f1e14301b2d132b34dd0f0672fff67d;hp=85b3b0140f04d6178ea9efcc3085b1e8752b2294;hb=794a6678aa37e8864845c72b14213ca44b9e159e;hpb=6502a8728975624437e172ea6b034b24295ceda5 diff --git a/ccan/talloc/test/run-external-alloc.c b/ccan/talloc/test/run-external-alloc.c index 85b3b014..fb1e17e9 100644 --- a/ccan/talloc/test/run-external-alloc.c +++ b/ccan/talloc/test/run-external-alloc.c @@ -5,47 +5,37 @@ static int ext_alloc_count, ext_free_count, ext_realloc_count; static void *expected_parent; -static void *ext_alloc(void *parent, size_t size) +static void *ext_realloc(const void *parent, void *ptr, size_t size) { ok1(parent == expected_parent); - ext_alloc_count++; - return malloc(size); -} - -static void ext_free(void *ptr, void *parent) -{ - ok1(parent == expected_parent); - ext_free_count++; - free(ptr); -} - -static void *ext_realloc(void *ptr, void *parent, size_t size) -{ - ok1(parent == expected_parent); - ext_realloc_count++; + if (ptr == NULL) + ext_alloc_count++; + if (size == 0) + ext_free_count++; + if (ptr && size) + ext_realloc_count++; return realloc(ptr, size); } int main(void) { char *p, *p2, *head; - plan_tests(10); + plan_tests(12); - talloc_external_enable(ext_alloc, ext_free, ext_realloc); - head = talloc(NULL, char); + expected_parent = NULL; + head = talloc_add_external(NULL, ext_realloc); assert(head); - expected_parent = head; - - talloc_mark_external(head); + ok1(ext_alloc_count == 1); + expected_parent = head; p = talloc_array(head, char, 1); - ok1(ext_alloc_count == 1); + ok1(ext_alloc_count == 2); assert(p); /* Child is also externally allocated */ expected_parent = p; p2 = talloc(p, char); - ok1(ext_alloc_count == 2); + ok1(ext_alloc_count == 3); expected_parent = head; p = talloc_realloc(NULL, p, char, 1000);