1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-11 08:23:49 +03:00

Only realloc the talloc stack if necessary

This commit is contained in:
Volker Lendecke
2008-01-08 22:12:35 +01:00
parent 1a15778331
commit c7cb98d486

View File

@@ -39,6 +39,7 @@
#include "includes.h"
static int talloc_stacksize;
static int talloc_stack_arraysize;
static TALLOC_CTX **talloc_stack;
static int talloc_pop(TALLOC_CTX *frame)
@@ -67,21 +68,25 @@ TALLOC_CTX *talloc_stackframe(void)
{
TALLOC_CTX **tmp, *top;
if (!(tmp = TALLOC_REALLOC_ARRAY(NULL, talloc_stack, TALLOC_CTX *,
talloc_stacksize + 1))) {
goto fail;
}
if (talloc_stack_arraysize < talloc_stacksize + 1) {
tmp = TALLOC_REALLOC_ARRAY(NULL, talloc_stack, TALLOC_CTX *,
talloc_stacksize + 1);
if (tmp == NULL) {
goto fail;
}
talloc_stack = tmp;
talloc_stack_arraysize = talloc_stacksize + 1;
}
talloc_stack = tmp;
top = talloc_new(talloc_stack);
if (!(top = talloc_new(talloc_stack))) {
if (top == NULL) {
goto fail;
}
talloc_set_destructor(top, talloc_pop);
talloc_stack[talloc_stacksize++] = top;
return top;
fail: