diff --git a/src/mzscheme/src/network.c b/src/mzscheme/src/network.c index a593281df9..f3b104f79f 100644 --- a/src/mzscheme/src/network.c +++ b/src/mzscheme/src/network.c @@ -1726,9 +1726,11 @@ tcp_connect_break(int argc, Scheme_Object *argv[]) static unsigned short get_no_portno(tcp_t socket, int *_errid) { char here[MZ_SOCK_NAME_MAX_LEN]; + struct sockaddr_in *addr_in; unsigned int l = sizeof(here); unsigned short no_port; + if (getsockname(socket, (struct sockaddr *)here, &l)) { int errid; errid = SOCK_ERRNO(); @@ -1737,7 +1739,8 @@ static unsigned short get_no_portno(tcp_t socket, int *_errid) } /* don't use ntohs, since the result is put back into another sin_port: */ - no_port = ((struct sockaddr_in *)here)->sin_port; + addr_in = (struct sockaddr_in *)here; + no_port = addr_in->sin_port; if (!no_port) *_errid = 0; return no_port;