1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-26 10:04:02 +03:00

talloc_stackframe only needs 1 talloc

(This used to be commit c0c2084d40b79e949dab7c68626aa665b9ea1a8e)
This commit is contained in:
Volker Lendecke 2008-01-06 17:25:20 +01:00
parent c8abd25d94
commit 8d261ee580

View File

@ -41,16 +41,18 @@
static int talloc_stacksize;
static TALLOC_CTX **talloc_stack;
static int talloc_pop(int *ptr)
static int talloc_pop(TALLOC_CTX *frame)
{
int tos = *ptr;
int i;
for (i=talloc_stacksize-1; i>=tos; i--) {
for (i=talloc_stacksize-1; i>0; i--) {
if (frame == talloc_stack[i]) {
break;
}
talloc_free(talloc_stack[i]);
}
talloc_stacksize = tos;
talloc_stacksize = i;
return 0;
}
@ -64,7 +66,6 @@ static int talloc_pop(int *ptr)
TALLOC_CTX *talloc_stackframe(void)
{
TALLOC_CTX **tmp, *top;
int *cleanup;
if (!(tmp = TALLOC_REALLOC_ARRAY(NULL, talloc_stack, TALLOC_CTX *,
talloc_stacksize + 1))) {
@ -77,12 +78,7 @@ TALLOC_CTX *talloc_stackframe(void)
goto fail;
}
if (!(cleanup = talloc(top, int))) {
goto fail;
}
*cleanup = talloc_stacksize;
talloc_set_destructor(cleanup, talloc_pop);
talloc_set_destructor(top, talloc_pop);
talloc_stack[talloc_stacksize++] = top;