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