1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-30 06:50:24 +03:00

talloc_stack: abort in developer me if no stackframe on talloc_tos()

Don't tolerate leaks in developer mode.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2012-07-18 15:07:27 +09:30
parent fe72740e82
commit 1f8b574adb
2 changed files with 9 additions and 4 deletions

View File

@ -188,15 +188,19 @@ TALLOC_CTX *_talloc_stackframe_pool(const char *location, size_t poolsize)
* Get us the current top of the talloc stack.
*/
TALLOC_CTX *talloc_tos(void)
TALLOC_CTX *_talloc_tos(const char *location)
{
struct talloc_stackframe *ts =
(struct talloc_stackframe *)SMB_THREAD_GET_TLS(global_ts);
if (ts == NULL || ts->talloc_stacksize == 0) {
talloc_stackframe();
_talloc_stackframe(location);
ts = (struct talloc_stackframe *)SMB_THREAD_GET_TLS(global_ts);
DEBUG(0, ("no talloc stackframe around, leaking memory\n"));
DEBUG(0, ("no talloc stackframe at %s, leaking memory\n",
location));
#ifdef DEVELOPER
smb_panic("No talloc stackframe");
#endif
}
return ts->talloc_stack[ts->talloc_stacksize-1];

View File

@ -53,7 +53,8 @@ TALLOC_CTX *_talloc_stackframe_pool(const char *location, size_t poolsize);
* Get us the current top of the talloc stack.
*/
TALLOC_CTX *talloc_tos(void);
#define talloc_tos() _talloc_tos(__location__)
TALLOC_CTX *_talloc_tos(const char *location);
/*
* return true if a talloc stackframe exists