From 2a441065a26f9796cdbc6e4ade50409b91d73f7e Mon Sep 17 00:00:00 2001
From: Guus Sliepen <guus@tinc-vpn.org>
Date: Sun, 27 Jun 2021 16:06:58 +0200
Subject: [PATCH] Fix for the event loop on Windows.

The code did not take into account that the return value of
WSAWaitForMultipleEvents() is the offset into the event array plus
WSA_WAIT_EVENT_0.

Based on a patch from arsh0r.
---
 src/event.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/event.c b/src/event.c
index 1283edd3..1ca15d20 100644
--- a/src/event.c
+++ b/src/event.c
@@ -435,12 +435,12 @@ bool event_loop(void) {
 				break;
 			}
 
-			if(result >= event_count - event_offset) {
-				return(false);
+			if(result < WSA_WAIT_EVENT_0 || result >= WSA_WAIT_EVENT_0 + event_count - event_offset) {
+				return false;
 			}
 
 			/* Look up io in the map by index. */
-			event_index = result - event_offset;
+			event_index = result - WSA_WAIT_EVENT_0 + event_offset;
 			io_t *io = io_map[event_index];
 
 			if(io->fd == -1) {
-- 
2.39.5