rem: memset(&sock2, 0, sizeof(sock2));
add: memset(&sock2, 0, sizeof sock2);
context: static int socketpair_tcp(int fd[2]){	int listener;	struct sockaddr_in sock;	struct sockaddr_in sock2;	socklen_t socklen = sizeof(sock);	int connect_done = 0;	fd[0] = fd[1] = listener = -1;	memset(&sock, 0, sizeof(sock));	if ((listener = socket(PF_INET, SOCK_STREAM, 0)) == -1)		goto failed;        memset(&sock2, 0, sizeof(sock2));#ifdef HAVE_SOCKADDR_LEN        sock2.sin_len = sizeof(sock2);#endif        sock2.sin_family = PF_INET;        bind(listener, (struct sockaddr *)&sock2, sizeof(sock2));	if (listen(listener, 1) != 0)		goto failed;	if (getsockname(listener, (struct sockaddr *)&sock, &socklen) != 0)		goto failed;	if ((fd[1] = socket(PF_INET, SOCK_STREAM, 0)) == -1)		goto failed;	set_nonblocking(fd[1]);	sock.sin_addr.s_addr = htonl(INADDR_LOOPBACK);	if (connect(fd[1],(struct sockaddr *)&sock,sizeof(sock)) == -1) {		if (errno != EINPROGRESS)			goto failed;	} else		connect_done = 1;	if ((fd[0] = accept(listener, (struct sockaddr *)&sock, &socklen)) == -1)		goto failed;	close(listener);	if (connect_done == 0) {		if (connect(fd[1],(struct sockaddr *)&sock,sizeof(sock)) != 0		    && errno != EISCONN)			goto failed;	}	set_blocking(fd[1]);	/* all OK! */	return 0; failed:	if (fd[0] != -1)		close(fd[0]);	if (fd[1] != -1)		close(fd[1]);	if (listener != -1)		close(listener);	return -1;}