summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetri Hintukainen <phintuka@users.sourceforge.net>2011-11-24 12:44:04 +0200
committerPetri Hintukainen <phintuka@users.sourceforge.net>2011-11-24 12:44:04 +0200
commit0d1157df4bfbb7722473c5d0214c2024bb98f680 (patch)
treefe2340447d96813bd4cfc16afc47d46f087681e1
parent944ce1be60e6ade88fb41c1914eecaaf54bd2786 (diff)
downloadxine-lib-0d1157df4bfbb7722473c5d0214c2024bb98f680.tar.gz
xine-lib-0d1157df4bfbb7722473c5d0214c2024bb98f680.tar.bz2
Fixed aliasing
--HG-- branch : point-release
-rw-r--r--src/xine-engine/io_helper.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/xine-engine/io_helper.c b/src/xine-engine/io_helper.c
index 22f34ffc2..eef843906 100644
--- a/src/xine-engine/io_helper.c
+++ b/src/xine-engine/io_helper.c
@@ -87,17 +87,19 @@ static int _x_io_tcp_connect_ipv4(xine_stream_t *stream, const char *host, int p
for (i = 0; h->h_addr_list[i]; i++) {
struct in_addr ia;
- struct sockaddr_in sin;
-
+ union {
+ struct sockaddr sa;
+ struct sockaddr_in in;
+ } saddr;
memcpy (&ia, h->h_addr_list[i], 4);
- sin.sin_family = AF_INET;
- sin.sin_addr = ia;
- sin.sin_port = htons(port);
+ saddr.in.sin_family = AF_INET;
+ saddr.in.sin_addr = ia;
+ saddr.in.sin_port = htons(port);
#ifndef WIN32
- if (connect(s, (struct sockaddr *)&sin, sizeof(sin))==-1 && errno != EINPROGRESS) {
+ if (connect(s, &saddr.sa, sizeof(saddr.in))==-1 && errno != EINPROGRESS) {
#else
- if (connect(s, (struct sockaddr *)&sin, sizeof(sin))==-1 && WSAGetLastError() != WSAEWOULDBLOCK) {
+ if (connect(s, &saddr.sa, sizeof(saddr.in))==-1 && WSAGetLastError() != WSAEWOULDBLOCK) {
if (stream)
xprintf(stream->xine, XINE_VERBOSITY_DEBUG, "io_helper: WSAGetLastError() = %d\n", WSAGetLastError());
#endif /* WIN32 */