From a54f0ea83e3cab4c27e730981bbfec2a958d4829 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 17 May 2005 07:10:45 +0000 Subject: [PATCH] r6849: Merge revision 6845 from Samba 4 (This used to be commit 44365075d22d395992b167e5a04d7083c05878cc) --- source3/lib/talloc.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/source3/lib/talloc.c b/source3/lib/talloc.c index 46abd89bac5..15b0f4ea7d8 100644 --- a/source3/lib/talloc.c +++ b/source3/lib/talloc.c @@ -94,17 +94,20 @@ struct talloc_chunk { struct talloc_chunk *parent, *child; struct talloc_reference_handle *refs; size_t size; - unsigned magic; talloc_destructor_t destructor; const char *name; + union { + unsigned magic; + double align_dummy; + } u; }; /* panic if we get a bad magic value */ static struct talloc_chunk *talloc_chunk_from_ptr(const void *ptr) { struct talloc_chunk *tc = discard_const_p(struct talloc_chunk, ptr)-1; - if (tc->magic != TALLOC_MAGIC) { - if (tc->magic == TALLOC_MAGIC_FREE) { + if (tc->u.magic != TALLOC_MAGIC) { + if (tc->u.magic == TALLOC_MAGIC_FREE) { TALLOC_ABORT("Bad talloc magic value - double free"); } else { TALLOC_ABORT("Bad talloc magic value - unknown value"); @@ -177,7 +180,7 @@ void *_talloc(const void *context, size_t size) if (tc == NULL) return NULL; tc->size = size; - tc->magic = TALLOC_MAGIC; + tc->u.magic = TALLOC_MAGIC; tc->destructor = NULL; tc->child = NULL; tc->name = NULL; @@ -556,7 +559,7 @@ int talloc_free(void *ptr) if (tc->next) tc->next->prev = tc->prev; } - tc->magic = TALLOC_MAGIC_FREE; + tc->u.magic = TALLOC_MAGIC_FREE; free(tc); return 0; @@ -596,7 +599,7 @@ void *_talloc_realloc(const void *context, void *ptr, size_t size, const char *n } /* by resetting magic we catch users of the old memory */ - tc->magic = TALLOC_MAGIC_FREE; + tc->u.magic = TALLOC_MAGIC_FREE; #if ALWAYS_REALLOC new_ptr = malloc(size + sizeof(*tc)); @@ -608,12 +611,12 @@ void *_talloc_realloc(const void *context, void *ptr, size_t size, const char *n new_ptr = realloc(tc, size + sizeof(*tc)); #endif if (!new_ptr) { - tc->magic = TALLOC_MAGIC; + tc->u.magic = TALLOC_MAGIC; return NULL; } tc = new_ptr; - tc->magic = TALLOC_MAGIC; + tc->u.magic = TALLOC_MAGIC; if (tc->parent) { tc->parent->child = new_ptr; } -- 2.11.4.GIT