On Wed, Sep 09, 2020 at 06:08:32PM +0800, oldk1331 wrote: > > > What about the attached patch. It skips 'memset' which seem > > to be not needed at all and cleans up relevant parts. > > Hi Waldek, I'm afraid you forget to include the attachment. > Oops, second time. -- Waldek Hebisch
-- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to fricas-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/fricas-devel/20200909103047.GA39118%40math.uni.wroc.pl.
diff --git a/src/lib/sockio-c.c b/src/lib/sockio-c.c index 30e0eba5..5878cfb1 100644 --- a/src/lib/sockio-c.c +++ b/src/lib/sockio-c.c @@ -752,13 +752,13 @@ connect_to_local_server(char *server_name, int purpose, int time_out) return NULL; } /* connect socket using name specified in command line */ - memset(server[1].addr.u_addr.sa_data, 0, - sizeof(server[1].addr.u_addr.sa_data)); sock->addr.u_addr.sa_family = FRICAS_AF_LOCAL; - strcpy(sock->addr.u_addr.sa_data, name); + strcpy(sock->addr.pad + + ((char *)(&(sock->addr.u_addr.sa_data)) + -(char *)(&(sock->addr.u_addr))), name); for(i=0; i<max_con; i++) { code = connect(sock->socket, &sock->addr.u_addr, - sizeof(sock->addr.u_addr)); + sizeof(sock->addr.pad)); if (code == -1) { if ( /* @@@ Why we need this */ @@ -923,12 +923,13 @@ open_server(char *server_name) server[1].socket = 0; return -2; } else { - server[1].addr.u_addr.sa_family = FRICAS_AF_LOCAL; - memset(server[1].addr.u_addr.sa_data, 0, - sizeof(server[1].addr.u_addr.sa_data)); - strcpy(server[1].addr.u_addr.sa_data, name); - if (bind(server[1].socket, &server[1].addr.u_addr, - sizeof(server[1].addr.u_addr))) { + Sock * sock = &(server[1]); + sock->addr.u_addr.sa_family = FRICAS_AF_LOCAL; + strcpy(sock->addr.pad + + ((char *)(&(sock->addr.u_addr.sa_data)) + -(char *)(&(sock->addr.u_addr))), name); + if (bind(sock->socket, &(sock->addr.u_addr), + sizeof(sock->addr.pad))) { perror("binding local server socket"); server[1].socket = 0; return -2; @@ -936,11 +937,12 @@ open_server(char *server_name) #ifdef HAVE_SO_NOSIGPIPE /* macOS doesn't have MSG_NOSIGNAL, so use SO_NOSIGPIPE instead */ int set = 1; - setsockopt(server[1].socket, SOL_SOCKET, SO_NOSIGPIPE, (void *)&set, sizeof(int)); + setsockopt(sock->socket, SOL_SOCKET, SO_NOSIGPIPE, + (void *)&set, sizeof(int)); #endif - FD_SET(server[1].socket, &socket_mask); - FD_SET(server[1].socket, &server_mask); - listen(server[1].socket, 5); + FD_SET(sock->socket, &socket_mask); + FD_SET(sock->socket, &server_mask); + listen(sock->socket, 5); } s = getenv("SPADSERVER"); if (s == NULL) {