]> granicus.if.org Git - curl/commitdiff
sockaddr.h: Fixed dereferencing pointer breakin strict-aliasing
authorMarc Hoersken <info@marc-hoersken.de>
Tue, 26 Jun 2012 05:27:02 +0000 (07:27 +0200)
committerYang Tse <yangsita@gmail.com>
Tue, 26 Jun 2012 19:24:29 +0000 (21:24 +0200)
Fixed warning: dereferencing pointer does break strict-aliasing rules
by using a union inside the struct Curl_sockaddr_storage declaration.

lib/sockaddr.h

index c69411b52f85611ce255c0b0966cd40f1bf38fa8..440eb0a97f5d178e87c456ddc5ca18e4842cd5d8 100644 (file)
 
 #include "setup.h"
 
-#ifdef HAVE_STRUCT_SOCKADDR_STORAGE
 struct Curl_sockaddr_storage {
-  struct sockaddr_storage buffer;
-};
+  union {
+    struct sockaddr sa;
+    struct sockaddr_in sa_in;
+#ifdef ENABLE_IPV6
+    struct sockaddr_in6 sa_in6;
+#endif
+#ifdef HAVE_STRUCT_SOCKADDR_STORAGE
+    struct sockaddr_storage sa_stor;
 #else
-struct Curl_sockaddr_storage {
-  char buffer[256];   /* this should be big enough to fit a lot */
-};
+    char cbuf[256];   /* this should be big enough to fit a lot */
 #endif
+  } buffer;
+};
 
 #endif /* __SOCKADDR_H */