The branch, v3-2-test has been updated
via ee905a085fff5410d02c3e5fa2664e989de4afd4 (commit)
via 0272b46515b4c4515d5cad8e86fab61d8e91e29e (commit)
via d89e42f1d2faa018c584025296d6be8195cbcf20 (commit)
from af07adaf4293899fcbded666289ffa7479ca0501 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit ee905a085fff5410d02c3e5fa2664e989de4afd4
Author: Volker Lendecke <[EMAIL PROTECTED]>
Date: Thu Jan 10 11:35:40 2008 +0100
Fix a c++ warning
commit 0272b46515b4c4515d5cad8e86fab61d8e91e29e
Author: Volker Lendecke <[EMAIL PROTECTED]>
Date: Thu Jan 10 11:35:17 2008 +0100
talloc_free_children can only reset pool if it's empty
commit d89e42f1d2faa018c584025296d6be8195cbcf20
Author: Volker Lendecke <[EMAIL PROTECTED]>
Date: Thu Jan 10 11:34:07 2008 +0100
Mark talloc_pool memory for valgrind
-----------------------------------------------------------------------
Summary of changes:
source/lib/talloc/talloc.c | 25 ++++++++++++++++++++-----
1 files changed, 20 insertions(+), 5 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/lib/talloc/talloc.c b/source/lib/talloc/talloc.c
index 178bbb9..9dcd8a2 100644
--- a/source/lib/talloc/talloc.c
+++ b/source/lib/talloc/talloc.c
@@ -245,6 +245,7 @@ static struct talloc_chunk *talloc_alloc_pool(struct
talloc_chunk *parent,
struct talloc_chunk *pool_ctx = NULL;
size_t space_left;
struct talloc_chunk *result;
+ size_t chunk_size;
if (parent == NULL) {
return NULL;
@@ -267,15 +268,19 @@ static struct talloc_chunk *talloc_alloc_pool(struct
talloc_chunk *parent,
/*
* Align size to 16 bytes
*/
- size = ((size + 15) & ~15);
+ chunk_size = ((size + 15) & ~15);
- if (space_left < size) {
+ if (space_left < chunk_size) {
return NULL;
}
result = (struct talloc_chunk *)pool_ctx->pool;
- pool_ctx->pool = (void *)((char *)result + size);
+#if defined(DEVELOPER) && defined(VALGRIND_MAKE_MEM_UNDEFINED)
+ VALGRIND_MAKE_MEM_UNDEFINED(result, size);
+#endif
+
+ pool_ctx->pool = (void *)((char *)result + chunk_size);
result->flags = TALLOC_MAGIC | TALLOC_FLAG_POOLMEM;
result->pool = pool_ctx;
@@ -358,6 +363,10 @@ void *talloc_pool(const void *context, size_t size)
*talloc_pool_objectcount(tc) = 1;
+#if defined(DEVELOPER) && defined(VALGRIND_MAKE_MEM_NOACCESS)
+ VALGRIND_MAKE_MEM_NOACCESS(tc->pool, size);
+#endif
+
return result;
}
@@ -857,8 +866,13 @@ void talloc_free_children(void *ptr)
}
}
- if (tc->flags & TALLOC_FLAG_POOL) {
+ if ((tc->flags & TALLOC_FLAG_POOL)
+ && (*talloc_pool_objectcount(tc) == 1)) {
tc->pool = ((char *)tc + TC_HDR_SIZE + TALLOC_POOL_HDR_SIZE);
+#if defined(DEVELOPER) && defined(VALGRIND_MAKE_MEM_NOACCESS)
+ VALGRIND_MAKE_MEM_NOACCESS(
+ tc->pool, tc->size - TALLOC_POOL_HDR_SIZE);
+#endif
}
}
@@ -954,7 +968,8 @@ void *_talloc_realloc(const void *context, void *ptr,
size_t size, const char *n
if (tc->flags & TALLOC_FLAG_POOLMEM) {
new_ptr = talloc_alloc_pool(tc, size + TC_HDR_SIZE);
- *talloc_pool_objectcount(tc->pool) -= 1;
+ *talloc_pool_objectcount((struct talloc_chunk *)
+ (tc->pool)) -= 1;
if (new_ptr == NULL) {
new_ptr = malloc(TC_HDR_SIZE+size);
--
Samba Shared Repository