From 01592a57a4c7e1337c7a7e01a985c0c9761f02de Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Wed, 1 Jan 2025 20:26:20 +0000 Subject: [PATCH] Fix bug with es_remove_event_listener --- src/event_system.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/event_system.c b/src/event_system.c index 38513e9..62b220e 100644 --- a/src/event_system.c +++ b/src/event_system.c @@ -11,7 +11,7 @@ #define IS_INVALID_SYSTEM(ES) (ES.id == 0) #define IS_INVALID_EVENT(EV) (EV.id == 0) -#define IS_INVALID_LISTENER(LS) (LS.id == 0) +#define IS_INVALID_LISTENER(LS) (LS.id == 0 || IS_INVALID_EVENT(LS.event)) typedef struct es_internal ESInternal; struct es_internal { @@ -219,7 +219,11 @@ void es_remove_event_listener(EventSystem event_system, EventListener listener) return; } - ESInternal *es = get_event_system_internal(event_system); + ESInternal *es = get_event_system_internal(event_system); + if (listener.event.id > es->event_count) { + return; + } + EventInternal *ev = get_event(es, listener.event); if (listener.id > ev->count) {