[PATCH] ws2_32: Only set error codes for triggered events in WSAEnumNetworkEvents().
Zebediah Figura
z.figura12 at gmail.com
Mon Feb 19 16:10:39 CST 2018
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/ws2_32/socket.c | 5 ++++-
dlls/ws2_32/tests/sock.c | 3 +--
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index fb0dbd2..2d755cc 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -7220,7 +7220,10 @@ int WINAPI WSAEnumNetworkEvents(SOCKET s, WSAEVENT hEvent, LPWSANETWORKEVENTS lp
if (!ret)
{
for (i = 0; i < FD_MAX_EVENTS; i++)
- lpEvent->iErrorCode[i] = NtStatusToWSAError(errors[i]);
+ {
+ if (lpEvent->lNetworkEvents & (1 << i))
+ lpEvent->iErrorCode[i] = NtStatusToWSAError(errors[i]);
+ }
return 0;
}
SetLastError(WSAEINVAL);
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 2b209d4..1ad6dba 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -2996,7 +2996,7 @@ static void test_WSAEnumNetworkEvents(void)
}
for (k = 0; k < FD_MAX_EVENTS; k++)
{
- if (i >= 1 && j == 0 && k == 1) /* first UDP and connected TCP test, FD_WRITE bit no error*/
+ if (net_events.lNetworkEvents & (1 << k))
{
ok (net_events.iErrorCode[k] == 0x0, "Test[%d][%d]: expected 0x0, got 0x%x\n",
i, k, net_events.iErrorCode[k]);
@@ -3004,7 +3004,6 @@ static void test_WSAEnumNetworkEvents(void)
else
{
/* Bits that are not set in lNetworkEvents MUST not be changed */
- todo_wine
ok (net_events.iErrorCode[k] == 0xABABABAB, "Test[%d][%d]: expected 0xABABABAB, got 0x%x\n",
i, k, net_events.iErrorCode[k]);
}
--
2.7.4
More information about the wine-devel
mailing list