summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Withnall <philip.withnall@collabora.co.uk>2013-11-19 19:05:04 +0000
committerPhilip Withnall <philip@tecnocode.co.uk>2013-12-18 23:41:32 +0000
commit9124c1e8829e20082fa5c8d54e7f53e1460141cc (patch)
tree0481ce23ba1de53d58523ff7244981a352a8254a
parentb656c57bfd487177236361ec49974726a4f62f23 (diff)
downloadlibgdata-9124c1e8829e20082fa5c8d54e7f53e1460141cc.tar.gz
tests: Fix strict aliasing problems with struct sockaddr
Make it a union and GCC is happy again.
-rw-r--r--gdata/tests/streams.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/gdata/tests/streams.c b/gdata/tests/streams.c
index a8c77a4c..7b4fe5f6 100644
--- a/gdata/tests/streams.c
+++ b/gdata/tests/streams.c
@@ -99,7 +99,10 @@ test_download_stream_download_server_content_length_handler_cb (SoupServer *serv
static SoupServer *
create_server (SoupServerCallback callback, gpointer user_data, GMainContext **async_context)
{
- struct sockaddr_in sock;
+ union {
+ struct sockaddr_in in;
+ struct sockaddr norm;
+ } sock;
SoupAddress *addr;
SoupServer *server;
@@ -107,11 +110,11 @@ create_server (SoupServerCallback callback, gpointer user_data, GMainContext **a
/* Create the server */
memset (&sock, 0, sizeof (sock));
- sock.sin_family = AF_INET;
- sock.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
- sock.sin_port = htons (0); /* random port */
+ sock.in.sin_family = AF_INET;
+ sock.in.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
+ sock.in.sin_port = htons (0); /* random port */
- addr = soup_address_new_from_sockaddr ((struct sockaddr *) &sock, sizeof (sock));
+ addr = soup_address_new_from_sockaddr (&sock.norm, sizeof (sock.norm));
g_assert (addr != NULL);
*async_context = g_main_context_new ();