r24627: merge from SAMBA_4_0:
authorStefan Metzmacher <metze@samba.org>
Wed, 22 Aug 2007 12:44:41 +0000 (12:44 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:30:11 +0000 (12:30 -0500)
as TALLOC_ABORT() is defined to abort() by default
wrap it into a function so that the function name
in the backtrace shows what happens.

metze
(This used to be commit ddbe971030070ab1b9fc37b8b0ac44a3d9303fe4)

source3/lib/talloc/talloc.c

index 6ebdada42f8ef17f7223a96e4f8d63b389f60cda..c073a8c77432d72c931cb04f1acdbc7e9c397718 100644 (file)
@@ -115,6 +115,16 @@ struct talloc_chunk {
 #define TC_HDR_SIZE ((sizeof(struct talloc_chunk)+15)&~15)
 #define TC_PTR_FROM_CHUNK(tc) ((void *)(TC_HDR_SIZE + (char*)tc))
 
+static void talloc_abort_double_free(void)
+{
+       TALLOC_ABORT("Bad talloc magic value - double free"); 
+}
+
+static void talloc_abort_unknown_value(void)
+{
+       TALLOC_ABORT("Bad talloc magic value - unknown value"); 
+}
+
 /* panic if we get a bad magic value */
 static inline struct talloc_chunk *talloc_chunk_from_ptr(const void *ptr)
 {
@@ -122,9 +132,9 @@ static inline struct talloc_chunk *talloc_chunk_from_ptr(const void *ptr)
        struct talloc_chunk *tc = discard_const_p(struct talloc_chunk, pp - TC_HDR_SIZE);
        if (unlikely((tc->flags & (TALLOC_FLAG_FREE | ~0xF)) != TALLOC_MAGIC)) { 
                if (tc->flags & TALLOC_FLAG_FREE) {
-                       TALLOC_ABORT("Bad talloc magic value - double free"); 
+                       talloc_abort_double_free();
                } else {
-                       TALLOC_ABORT("Bad talloc magic value - unknown value"); 
+                       talloc_abort_unknown_value();
                }
        }
        return tc;