提交 cd00ca2a 编写于 作者: C chegar

6730740: Fix for 6729881 has apparently broken several 64 bit tests: "Bad address"

Reviewed-by: alanb, jccollet
上级 dec04050
......@@ -281,7 +281,9 @@ int NET_ReadV(int s, const struct iovec * vector, int count) {
int NET_RecvFrom(int s, void *buf, int len, unsigned int flags,
struct sockaddr *from, int *fromlen) {
BLOCKING_IO_RETURN_INT( s, recvfrom(s, buf, len, flags, from, (socklen_t)fromlen) );
socklen_t socklen = *fromlen;
BLOCKING_IO_RETURN_INT( s, recvfrom(s, buf, len, flags, from, &socklen) );
*fromlen = socklen;
}
int NET_Send(int s, void *msg, int len, unsigned int flags) {
......@@ -298,7 +300,9 @@ int NET_SendTo(int s, const void *msg, int len, unsigned int
}
int NET_Accept(int s, struct sockaddr *addr, int *addrlen) {
BLOCKING_IO_RETURN_INT( s, accept(s, addr, (socklen_t)addrlen) );
socklen_t socklen = *addrlen;
BLOCKING_IO_RETURN_INT( s, accept(s, addr, &socklen) );
*addrlen = socklen;
}
int NET_Connect(int s, struct sockaddr *addr, int addrlen) {
......
......@@ -1085,7 +1085,16 @@ NET_GetSockOpt(int fd, int level, int opt, void *result,
}
#endif
rv = getsockopt(fd, level, opt, result, (socklen_t)len);
#ifdef __solaris__
rv = getsockopt(fd, level, opt, result, len);
#else
{
socklen_t socklen = *len;
rv = getsockopt(fd, level, opt, result, &socklen);
*len = socklen;
}
#endif
if (rv < 0) {
return rv;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册