From e796711f6e5217f356e016e3c68826d7f4792d1b Mon Sep 17 00:00:00 2001
From: altalk23 <45172705+altalk23@users.noreply.github.com>
Date: Thu, 20 Jun 2024 23:46:09 +0300
Subject: [PATCH] quick fix events crash

---
 loader/src/loader/Event.cpp | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/loader/src/loader/Event.cpp b/loader/src/loader/Event.cpp
index eab66eac..d696e778 100644
--- a/loader/src/loader/Event.cpp
+++ b/loader/src/loader/Event.cpp
@@ -10,6 +10,10 @@ bool DefaultEventListenerPool::add(EventListenerProtocol* listener) {
     if (!m_data) m_data = std::make_unique<Data>();
 
     std::unique_lock lock(m_data->m_mutex);
+    if (ranges::contains(m_data->m_listeners, listener) || ranges::contains(m_data->m_toAdd, listener)) {
+        return false;
+    }
+    
     if (m_data->m_locked) {
         m_data->m_toAdd.push_back(listener);
     }
@@ -34,6 +38,7 @@ void DefaultEventListenerPool::remove(EventListenerProtocol* listener) {
     else {
         ranges::remove(m_data->m_listeners, listener);
     }
+    ranges::remove(m_data->m_toAdd, listener);
 }
 
 ListenerResult DefaultEventListenerPool::handle(Event* event) {