Re: ws2_32: Fix FreeBSD compiling issue on ipx address structure
On Sun, 5 Jan 2014, Bruno Jesus wrote:
Manually tested on PC-BSD which also shows the issue.
I think it would even work to compare sipx_network and sipx_node in one go. There is already code that copies them that way in ws_sockaddr_ws2u(): memcpy(&uipx->sipx_network,wsipx->sa_netnum,sizeof(uipx->sipx_network)+sizeof(uipx->sipx_node)); So we could do (compiles but not tested): diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 0391554..a92c5c3 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -1473,7 +1473,10 @@ static BOOL is_sockaddr_bound(const struct sockaddr *uaddr, int uaddrlen) { static const struct sockaddr_ipx emptyAddr; struct sockaddr_ipx *ipx = (struct sockaddr_ipx*) uaddr; - return ipx->sipx_port || ipx->sipx_network || memcmp(&ipx->sipx_node, &emptyAddr.sipx_node, sizeof(emptyAddr.sipx_node)); + + /* compare sipx_network and sipx_node in one go to ease portability */ + return ipx->sipx_port || + memcmp(&ipx->sipx_network, &emptyAddr.sipx_network, sizeof(emptyAddr.sipx_network) + sizeof(emptyAddr.sipx_node)); } #endif case AF_INET6: But your patch works too. -- Francois Gouget <fgouget(a)free.fr> http://fgouget.free.fr/ Research is the transformation of money to knowledge. Innovation is the transformation of knowledge to money. -- Dr. Hans Meixner
participants (1)
-
Francois Gouget