yterm

commit ca0fac7f7d760e07be1eb324903f26cd81eeb843

Author: mesyeti <mesyeti@mesyeti.uk>

fix UB again

 source/event.c | 15 ++++++++-------


diff --git a/source/event.c b/source/event.c
index 5b53cc5d61fa8abbabc3c19fa5842d8c67d74775..dfacedccc56a9d2f35f845e5f0396ab6cc301f9a 100644
--- a/source/event.c
+++ b/source/event.c
@@ -30,18 +30,20 @@ 		free(handlers);
 	}
 }
 
-static int FindFree(void) {
+static Event* FindFree(void) {
 	int i;
 
 	for (i = 0; i < eventsSize; ++ i) {
-		if (events[i].type == EVENT_NONE) return i;
+		if (events[i].type == EVENT_NONE) {
+			return &events[i];
+		}
 	}
 
 	for (i = 0; i < eventsSize; ++ i) {
 		printf("Event %d: %d\n", i, (int) events[i].type);
 	}
 
-	int old     = eventsSize;
+	size_t old  = eventsSize;
 	events      = SafeRealloc(events, eventsSize * 2 * sizeof(Event));
 	eventsSize *= 2;
 
@@ -49,7 +51,7 @@ 	for (int i = old; i < eventsSize; ++ i) {
 		events[i].type = EVENT_NONE;
 	}
 
-	return old;
+	return &events[old];
 }
 
 void Event_Add(Event e) {
@@ -61,8 +63,7 @@ 			}
 		}
 	}
 
-	int idx = FindFree();
-	events[idx] = e;
+	*FindFree() = e;
 }
 
 void Event_Update(void) {
@@ -70,7 +71,7 @@ 	Event e;
 
 	Event_PrepareExternal();
 	while (Event_PollExternal(&e)) {
-		events[FindFree()] = e;
+		*FindFree() = e;
 
 		for (size_t i = 0; i < handlerNum; ++ i) {
 			if (handlers[i].type == e.type) {