CVS: winex/dlls/winsock socket.c,1.49,1.50

[email protected] 31 Jul 2007 19:52:40 -0000
Newsgroups gmane.comp.emulators.winex.cvs
Message-ID <[email protected]>
Subject: winex/dlls/winsock socket.c,1.49,1.50Update of /var/lib/cvsd/cvsroot/winex/dlls/winsock
In directory agravaine:/tmp/cvs-serv1417/dlls/winsock

Modified Files:
	socket.c 
Log Message:

- memory leak fix
- ensure rest of sockaddr structure is zero'd out


Index: socket.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/dlls/winsock/socket.c,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -d -r1.49 -r1.50
--- socket.c	31 Jul 2007 19:50:58 -0000	1.49
+++ socket.c	31 Jul 2007 19:52:38 -0000	1.50
@@ -1081,6 +1081,24 @@
         break;
 #endif
 
+       case AF_INET: {
+          const struct sockaddr_in *sin = (const struct sockaddr_in *)uaddr;
+          struct WS_sockaddr_in *wsin =
+             (struct WS_sockaddr_in *)wsaddr;
+
+          if (*wsaddrlen < sizeof (struct WS_sockaddr_in))
+             return -1;
+
+          *wsaddrlen = sizeof (struct WS_sockaddr_in);
+
+          memset (wsin, 0, *wsaddrlen);
+          wsin->sin_family = WS_AF_INET;
+          wsin->sin_port = sin->sin_port;
+          memcpy (&wsin->sin_addr, &sin->sin_addr, 4);
+          res = 0;
+          break;
+       }
+
     default:
         /* No conversion needed */
         memcpy(wsaddr,uaddr,*wsaddrlen);
@@ -1881,8 +1899,10 @@
         else
         {
             res=0;
+            dump_sockaddr(name);
         }
         close(fd);
+        ws_sockaddr_free (uaddr, name);
     }
     else
     {