From f9b51ff33e10aa126de848072e98b0bf36a7dbc7 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Wed, 18 Jul 2012 04:56:31 +0930 Subject: talloc_stack: always include the location when creating a talloc_stackframe(). Much better for debugging. Signed-off-by: Rusty Russell --- lib/util/talloc_stack.c | 13 +++++++------ lib/util/talloc_stack.h | 6 ++++-- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'lib') diff --git a/lib/util/talloc_stack.c b/lib/util/talloc_stack.c index b837843c84..304ea17d8c 100644 --- a/lib/util/talloc_stack.c +++ b/lib/util/talloc_stack.c @@ -115,7 +115,8 @@ static int talloc_pop(TALLOC_CTX *frame) * not explicitly freed. */ -static TALLOC_CTX *talloc_stackframe_internal(size_t poolsize) +static TALLOC_CTX *talloc_stackframe_internal(const char *location, + size_t poolsize) { TALLOC_CTX **tmp, *top; struct talloc_stackframe *ts = @@ -151,7 +152,7 @@ static TALLOC_CTX *talloc_stackframe_internal(size_t poolsize) if (top == NULL) { goto fail; } - + talloc_set_name_const(top, location); talloc_set_destructor(top, talloc_pop); ts->talloc_stack[ts->talloc_stacksize++] = top; @@ -162,14 +163,14 @@ static TALLOC_CTX *talloc_stackframe_internal(size_t poolsize) return NULL; } -TALLOC_CTX *talloc_stackframe(void) +TALLOC_CTX *_talloc_stackframe(const char *location) { - return talloc_stackframe_internal(0); + return talloc_stackframe_internal(location, 0); } -TALLOC_CTX *talloc_stackframe_pool(size_t poolsize) +TALLOC_CTX *_talloc_stackframe_pool(const char *location, size_t poolsize) { - return talloc_stackframe_internal(poolsize); + return talloc_stackframe_internal(location, poolsize); } /* diff --git a/lib/util/talloc_stack.h b/lib/util/talloc_stack.h index ec0c1c6f37..8e1644624b 100644 --- a/lib/util/talloc_stack.h +++ b/lib/util/talloc_stack.h @@ -44,8 +44,10 @@ * not explicitly freed. */ -TALLOC_CTX *talloc_stackframe(void); -TALLOC_CTX *talloc_stackframe_pool(size_t poolsize); +#define talloc_stackframe() _talloc_stackframe(__location__) +#define talloc_stackframe_pool(sz) _talloc_stackframe_pool(__location__, (sz)) +TALLOC_CTX *_talloc_stackframe(const char *location); +TALLOC_CTX *_talloc_stackframe_pool(const char *location, size_t poolsize); /* * Get us the current top of the talloc stack. -- cgit