Index: ext/socket/raddrinfo.c =================================================================== --- ext/socket/raddrinfo.c (revision 22918) +++ ext/socket/raddrinfo.c (working copy) @@ -887,7 +887,7 @@ if (rai->sockaddr_len == 0) { rb_str_cat2(ret, "empty-sockaddr"); } - else if (rai->sockaddr_len < ((char*)&rai->addr.ss_family + sizeof(rai->addr.ss_family)) - (char*)&rai->addr) + else if ((long)rai->sockaddr_len < ((char*)&rai->addr.ss_family + sizeof(rai->addr.ss_family)) - (char*)&rai->addr) rb_str_cat2(ret, "too-short-sockaddr"); else { switch (rai->addr.ss_family) { Index: ext/socket/socket.c =================================================================== --- ext/socket/socket.c (revision 22918) +++ ext/socket/socket.c (working copy) @@ -1450,7 +1450,7 @@ break; } #ifdef SA_LEN - if (len < SA_LEN(addr)) + if (len < (socklen_t)SA_LEN(addr)) len = SA_LEN(addr); #endif