From: Volker Lendecke Date: Fri, 6 Sep 2013 22:30:38 +0000 (-0700) Subject: talloc: Test the pooled object X-Git-Tag: samba-4.0.26~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2c3ca8f15dfbe38389650d4185ac7a9611162869;p=thirdparty%2Fsamba.git talloc: Test the pooled object Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison Reviewed-by: Stefan Metzmacher (cherry picked from commit 256d10f5792a37d20cbb45f2af3f8578bd354110) --- diff --git a/lib/talloc/testsuite.c b/lib/talloc/testsuite.c index f04f4f1cc72..888d260cbc9 100644 --- a/lib/talloc/testsuite.c +++ b/lib/talloc/testsuite.c @@ -1291,6 +1291,40 @@ static bool test_pool_nest(void) return true; } +struct pooled { + char *s1; + char *s2; + char *s3; +}; + +static bool test_pooled_object(void) +{ + struct pooled *p; + const char *s1 = "hello"; + const char *s2 = "world"; + const char *s3 = ""; + + p = talloc_pooled_object(NULL, struct pooled, 3, + strlen(s1)+strlen(s2)+strlen(s3)+3); + + if (talloc_get_size(p) != sizeof(struct pooled)) { + return false; + } + + p->s1 = talloc_strdup(p, s1); + + TALLOC_FREE(p->s1); + p->s1 = talloc_strdup(p, s2); + TALLOC_FREE(p->s1); + + p->s1 = talloc_strdup(p, s1); + p->s2 = talloc_strdup(p, s2); + p->s3 = talloc_strdup(p, s3); + + TALLOC_FREE(p); + return true; +} + static bool test_free_ref_null_context(void) { void *p1, *p2, *p3; @@ -1590,6 +1624,8 @@ bool torture_local_talloc(struct torture_context *tctx) setlinebuf(stdout); + test_reset(); + ret &= test_pooled_object(); test_reset(); ret &= test_pool_nest(); test_reset();