[PATCH] Add stackframes to public libsmbclient functions
tridge at samba.org
tridge at samba.org
Wed Nov 28 04:37:12 GMT 2007
Volker,
I know I'm coming into this debate a little late, but perhaps this
helps?
Change from this:
{
TALLOC_CTX *ctx = talloc_init("bla");
DEBUG(10, ("sid: %s\n", sid_string_talloc(ctx, sid)));
talloc_free(ctx);
}
to this:
DEBUG(10,("sid: %s\n", sid_string_talloc(debug_ctx(), sid)));
then put this in lib/debug.c:
static void *tmp_debug_ctx;
void *debug_ctx(void)
{
if (tmp_debug_ctx == NULL) {
tmp_debug_ctx = talloc_named_const(NULL, 0, "debug_ctx");
}
return tmp_debug_ctx;
}
then in Debug1() add this at the end of the function:
talloc_free(tmp_debug_ctx);
tmp_debug_ctx = NULL;
This only solves things for DEBUG() calls, but perhaps that is the
main source of pain?
The nice part of this idea is that:
- due to the way the DEBUG() macro works, debug_ctx only gets created
if we are indeed going to be writing something to the logs
- it gets freed up immediately it is no longer needed.
It still leaves us with a static, but its associated with only the
debug code.
Cheers, Tridge
More information about the samba-technical
mailing list