WSACleanup fix.
Rein Klazes
wijn at wanadoo.nl
Tue Nov 29 13:10:52 CST 2005
On Tue, 29 Nov 2005 10:33:49 -0600, you wrote:
> if (num_startup)
>+ {
>+ num_startup--;
> return 0;
>+ }
Yes, that is more correct. Re-reading the MSDN this is what should be
happening.
Changelog:
dlls/winsock : socket.c
dlls/winsock/tests : sock.c
(With input from Robert Shearman) Decrement the reference counter in
WSACleanUp with regression test.
Rein.
-------------- next part --------------
--- wine/dlls/winsock/socket.c 2005-11-24 17:00:02.000000000 +0100
+++ mywine/dlls/winsock/socket.c 2005-11-29 20:01:53.000000000 +0100
@@ -830,8 +830,10 @@ int WINAPI WSAStartup(WORD wVersionReque
*/
INT WINAPI WSACleanup(void)
{
- if (num_startup)
+ if (num_startup) {
+ num_startup -= 1;
return 0;
+ }
SetLastError(WSANOTINITIALISED);
return SOCKET_ERROR;
}
--- wine/dlls/winsock/tests/sock.c 2005-11-14 20:31:23.000000000 +0100
+++ mywine/dlls/winsock/tests/sock.c 2005-11-29 14:33:08.000000000 +0100
@@ -709,8 +709,15 @@ static void Init (void)
static void Exit (void)
{
+ INT ret, err;
TlsFree ( tls );
- ok ( WSACleanup() == 0, "WSACleanup failed\n" );
+ ret = WSACleanup();
+ err = WSAGetLastError();
+ ok ( ret == 0, "WSACleanup failed ret = %d GetLastError is %d\n", ret, err);
+ ret = WSACleanup();
+ err = WSAGetLastError();
+ ok ( ret == SOCKET_ERROR && err == WSANOTINITIALISED,
+ "WSACleanup returned %d GetLastError is %d\n", ret, err);
}
static void StartServer (LPTHREAD_START_ROUTINE routine,
More information about the wine-patches
mailing list