[SCM] Samba Shared Repository - branch v3-2-test updated -
initial-v3-2-unstable-1197-gc7cb98d
Volker Lendecke
vl at samba.org
Tue Jan 8 21:15:12 GMT 2008
The branch, v3-2-test has been updated
via c7cb98d486ef8af1dc7111c2316fd73db9fef9f8 (commit)
via 1a15778331393f9ece9aac9450828e799b20a058 (commit)
from ac3a433befca2c6b674fc7e7f2f2c700d78b0a0c (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit c7cb98d486ef8af1dc7111c2316fd73db9fef9f8
Author: Volker Lendecke <vl at samba.org>
Date: Tue Jan 8 22:12:35 2008 +0100
Only realloc the talloc stack if necessary
commit 1a15778331393f9ece9aac9450828e799b20a058
Author: Volker Lendecke <vl at samba.org>
Date: Tue Jan 8 21:45:21 2008 +0100
Allocate dirp->name_cache on demand only
-----------------------------------------------------------------------
Summary of changes:
source/lib/talloc_stack.c | 19 ++++++++++++-------
source/smbd/dir.c | 21 ++++++++++-----------
2 files changed, 22 insertions(+), 18 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/lib/talloc_stack.c b/source/lib/talloc_stack.c
index cc7ce3a..d887b2d 100644
--- a/source/lib/talloc_stack.c
+++ b/source/lib/talloc_stack.c
@@ -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:
diff --git a/source/smbd/dir.c b/source/smbd/dir.c
index ab6e12f..04e3167 100644
--- a/source/smbd/dir.c
+++ b/source/smbd/dir.c
@@ -1139,16 +1139,6 @@ struct smb_Dir *OpenDir(connection_struct *conn, const char *name, const char *m
goto fail;
}
- if (dirp->name_cache_size) {
- dirp->name_cache = SMB_CALLOC_ARRAY(struct name_cache_entry,
- dirp->name_cache_size);
- if (!dirp->name_cache) {
- goto fail;
- }
- } else {
- dirp->name_cache = NULL;
- }
-
dirhandles_open++;
return dirp;
@@ -1295,10 +1285,19 @@ void DirCacheAdd(struct smb_Dir *dirp, const char *name, long offset)
{
struct name_cache_entry *e;
- if (!dirp->name_cache_size || !dirp->name_cache) {
+ if (dirp->name_cache_size == 0) {
return;
}
+ if (dirp->name_cache == NULL) {
+ dirp->name_cache = SMB_CALLOC_ARRAY(struct name_cache_entry,
+ dirp->name_cache_size);
+
+ if (dirp->name_cache == NULL) {
+ return;
+ }
+ }
+
dirp->name_cache_index = (dirp->name_cache_index+1) %
dirp->name_cache_size;
e = &dirp->name_cache[dirp->name_cache_index];
--
Samba Shared Repository
More information about the samba-cvs
mailing list