]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
This is to avoid gcc warnings when building with strict-aliasing optimization
authorNeil Brown <neilb@suse.de>
Mon, 29 May 2006 02:06:32 +0000 (02:06 +0000)
committerNeil Brown <neilb@suse.de>
Mon, 29 May 2006 02:06:32 +0000 (02:06 +0000)
fix for another srict-aliasing problem, you can typecast a reference to a
void pointer to anything, you cannot typecast a reference to a
struct.

From: Luca Berra <bluca@vodka.it>
Signed-off-by: Neil Brown <neilb@suse.de>
dlink.h

diff --git a/dlink.h b/dlink.h
index 15cab938ca6ef0a9f4744a4b23f8bf990dbf5e50..8e3f4cf9b34c56bdaa0e4d94c3e05024db2c25cf 100644 (file)
--- a/dlink.h
+++ b/dlink.h
@@ -4,16 +4,16 @@
 
 struct __dl_head
 {
-    struct __dl_head * dh_prev;
-    struct __dl_head * dh_next;
+    void * dh_prev;
+    void * dh_next;
 };
 
 #define        dl_alloc(size)  ((void*)(((char*)calloc(1,(size)+sizeof(struct __dl_head)))+sizeof(struct __dl_head)))
 #define        dl_new(t)       ((t*)dl_alloc(sizeof(t)))
 #define        dl_newv(t,n)    ((t*)dl_alloc(sizeof(t)*n))
 
-#define dl_next(p) *((void**)&(((struct __dl_head*)(p))[-1].dh_next))
-#define dl_prev(p) *((void**)&(((struct __dl_head*)(p))[-1].dh_prev))
+#define dl_next(p) *(&(((struct __dl_head*)(p))[-1].dh_next))
+#define dl_prev(p) *(&(((struct __dl_head*)(p))[-1].dh_prev))
 
 void *dl_head(void);
 char *dl_strdup(char *);