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) {