summaryrefslogtreecommitdiff
path: root/ext/socket/raddrinfo.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-27 15:21:23 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-27 15:21:23 +0000
commit5fb1faf2bfc87597dbbf1a6686bab6b36482529d (patch)
tree05ecf4363780e14bd42b26d179cc1bd37ffbf46b /ext/socket/raddrinfo.c
parentd8c66c433393cb0ff97fcbd32f6a4fdc4d8f8b79 (diff)
* ext/socket/raddrinfo.c: suppress strict-aliasing warning with
gcc version 4.4.0 20090219 (Red Hat 4.4.0-0.21) on Fedora 11 Alpha. * ext/socket/socket.c: ditto. * ext/socket/unixsocket.c: ditto. * ext/socket/sockport.h (SS_LEN): defined. (SET_SS_LEN): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22668 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/socket/raddrinfo.c')
-rw-r--r--ext/socket/raddrinfo.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/ext/socket/raddrinfo.c b/ext/socket/raddrinfo.c
index eead911705..ff3926405a 100644
--- a/ext/socket/raddrinfo.c
+++ b/ext/socket/raddrinfo.c
@@ -1255,15 +1255,16 @@ addrinfo_mload(VALUE self, VALUE ary)
#ifdef HAVE_SYS_UN_H
case AF_UNIX:
{
- struct sockaddr_un *su = (struct sockaddr_un *)&ss;
- memset(su, 0, sizeof(*su));
- su->sun_family = AF_UNIX;
+ struct sockaddr_un sun;
+ memset(&sun, 0, sizeof(sun));
+ sun.sun_family = AF_UNIX;
StringValue(v);
- if (sizeof(su->sun_path) <= RSTRING_LEN(v))
+ if (sizeof(sun.sun_path) <= RSTRING_LEN(v))
rb_raise(rb_eSocket, "too long AF_UNIX path");
- memcpy(su->sun_path, RSTRING_PTR(v), RSTRING_LEN(v));
- len = sizeof(*su);
+ memcpy(sun.sun_path, RSTRING_PTR(v), RSTRING_LEN(v));
+ len = sizeof(sun);
+ memcpy(&ss, &sun, len);
break;
}
#endif