Module: wine
Branch: master
Commit: 13928e0855358f469543a0ceee56e5fa8dfa5175
URL: https://gitlab.winehq.org/wine/wine/-/commit/13928e0855358f469543a0ceee56e5…
Author: Fabian Maurer <dark.shadow4(a)web.de>
Date: Thu Nov 30 22:50:57 2023 +0100
server: Check socket flags after all sockets got processed.
In rare cases we get an event during the second iteration of the loop,
changing the first element. This would lead to an assertion later.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55054
---
server/sock.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/server/sock.c b/server/sock.c
index bd441d822a8..84c0d4a4931 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -3509,7 +3509,10 @@ static void poll_socket( struct sock *poll_sock, struct async *async, int exclus
req->sockets[i].flags |= AFD_POLL_CONNECT_ERR;
req->sockets[i].status = sock_get_ntstatus( sock->errors[AFD_POLL_BIT_CONNECT_ERR] );
}
+ }
+ for (i = 0; i < count; ++i)
+ {
if (req->sockets[i].flags)
signaled = TRUE;
}