r17645: gcc 4.1.x has started producing "value computed is not used" warnings
authorAndrew Tridgell <tridge@samba.org>
Mon, 21 Aug 2006 01:27:22 +0000 (01:27 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:16:19 +0000 (14:16 -0500)
in very annoying ways for talloc_steal. This rather strange looking
cpp approach avoids these warnings. It's really a problem in gcc, but
better to do this than put up with the huge flood of warnings.

source/lib/talloc/talloc.h

index c6d20c820f7188683af9ac3071703d0fc4cc313a..b873bdb8aa849f1fb996a94ba9862b1c77b751f1 100644 (file)
@@ -62,10 +62,14 @@ typedef void TALLOC_CTX;
                _talloc_set_destructor((ptr), (void *)_talloc_destructor_fn); \
        } while(0)
 #define _TALLOC_CHECK_TYPE(type,val) 
+/* this extremely strange macro is to avoid some braindamaged warning
+   stupidity in gcc 4.1.x */
+#define talloc_steal(ctx, ptr) ({ __typeof__(ptr) __talloc_steal_ret = (__typeof__(ptr))_talloc_steal((ctx),(ptr)); __talloc_steal_ret; })
 #else
 #define talloc_set_destructor(ptr, function) \
        _talloc_set_destructor((ptr), (int (*)(void *))(function))
 #define _TALLOC_TYPEOF(ptr) void *
+#define talloc_steal(ctx, ptr) (_TALLOC_TYPEOF(ptr))_talloc_steal((ctx),(ptr))
 #endif
 
 /* useful macros for creating type checked pointers */
@@ -90,7 +94,6 @@ typedef void TALLOC_CTX;
 #define talloc_get_type(ptr, type) (type *)talloc_check_name(ptr, #type)
 
 #define talloc_find_parent_bytype(ptr, type) (type *)talloc_find_parent_byname(ptr, #type)
-#define talloc_steal(ctx, ptr) (_TALLOC_TYPEOF(ptr))_talloc_steal((ctx),(ptr))
 
 #if TALLOC_DEPRECATED
 #define talloc_zero_p(ctx, type) talloc_zero(ctx, type)