diff --git a/src/xpdev/sockwrap.c b/src/xpdev/sockwrap.c
index 1a2d1cb30788eb5a8127c43c6992240e4ba98029..d25e7444e48ec3165fd659e3020eedbe642071f5 100644
--- a/src/xpdev/sockwrap.c
+++ b/src/xpdev/sockwrap.c
@@ -373,12 +373,13 @@ int nonblocking_connect(SOCKET sock, struct sockaddr* addr, size_t size, unsigne
 		&& (ERROR_VALUE==EWOULDBLOCK || ERROR_VALUE==EINPROGRESS)) {
 		fd_set		socket_set;
 		struct		timeval tv;
+		socklen_t	optlen=sizeof(result);
 		tv.tv_sec = timeout;
 		tv.tv_usec = 0;
 		FD_ZERO(&socket_set);
 		FD_SET(sock,&socket_set);
 		if(select(sock,NULL,&socket_set,NULL,&tv)==1)
-			getsockopt(sock, SOL_SOCKET, SO_ERROR, &result, sizeof(result));
+			getsockopt(sock, SOL_SOCKET, SO_ERROR, (void*)&result, &optlen);
 	}
 	return result;
 }