From f9fdef870e4c49d9e6c23ba085ba6dbd34ec5469 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 31 Mar 2011 19:50:47 +0200 Subject: talloc/testsuite: test more talloc_pool related things metze Signed-off-By: Andrew Tridgell --- lib/talloc/testsuite.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/lib/talloc/testsuite.c b/lib/talloc/testsuite.c index ee6256b8e1..6395e83684 100644 --- a/lib/talloc/testsuite.c +++ b/lib/talloc/testsuite.c @@ -1123,6 +1123,7 @@ static bool test_pool(void) { void *pool; void *p1, *p2, *p3, *p4; + void *p2_2; pool = talloc_pool(NULL, 1024); @@ -1131,6 +1132,60 @@ static bool test_pool(void) p3 = talloc_size(p1, 50); p4 = talloc_size(p3, 1000); +#if 1 /* this relies on ALWAYS_REALLOC == 0 in talloc.c */ + p2_2 = talloc_realloc_size(pool, p2, 20+1); + torture_assert("pool realloc 20+1", p2_2 == p2, "failed: pointer changed"); + p2_2 = talloc_realloc_size(pool, p2, 20-1); + torture_assert("pool realloc 20-1", p2_2 == p2, "failed: pointer changed"); + p2_2 = talloc_realloc_size(pool, p2, 20-1); + torture_assert("pool realloc 20-1", p2_2 == p2, "failed: pointer changed"); + + talloc_free(p3); + + /* this should reclaim the memory of p4 and p3 */ + p2_2 = talloc_realloc_size(pool, p2, 400); + torture_assert("pool realloc 400", p2_2 == p2, "failed: pointer changed"); + + talloc_free(p1); + + /* this should reclaim the memory of p1 */ + p2_2 = talloc_realloc_size(pool, p2, 800); + torture_assert("pool realloc 800", p2_2 == p1, "failed: pointer not changed"); + p2 = p2_2; + + /* this should do a malloc */ + p2_2 = talloc_realloc_size(pool, p2, 1800); + torture_assert("pool realloc 1800", p2_2 != p2, "failed: pointer not changed"); + p2 = p2_2; + + /* this should reclaim the memory from the pool */ + p3 = talloc_size(pool, 80); + torture_assert("pool alloc 80", p3 == p1, "failed: pointer changed"); + + talloc_free(p2); + talloc_free(p3); + + p1 = talloc_size(pool, 80); + p2 = talloc_size(pool, 20); + + talloc_free(p1); + + p2_2 = talloc_realloc_size(pool, p2, 20-1); + torture_assert("pool realloc 20-1", p2_2 == p2, "failed: pointer changed"); + p2_2 = talloc_realloc_size(pool, p2, 20-1); + torture_assert("pool realloc 20-1", p2_2 == p2, "failed: pointer changed"); + + /* this should do a malloc */ + p2_2 = talloc_realloc_size(pool, p2, 1800); + torture_assert("pool realloc 1800", p2_2 != p2, "failed: pointer not changed"); + p2 = p2_2; + + /* this should reclaim the memory from the pool */ + p3 = talloc_size(pool, 800); + torture_assert("pool alloc 800", p3 == p1, "failed: pointer changed"); + +#endif /* this relies on ALWAYS_REALLOC == 0 in talloc.c */ + talloc_free(pool); return true; -- cgit