From 0a6951865cff25a1d8a87c0acf14b2d365377669 Mon Sep 17 00:00:00 2001 From: Nav Date: Sun, 18 Dec 2022 17:56:21 +0000 Subject: [PATCH] Fixed regression which was causing a deadlock when de-registering event handlers from an event handler --- src/EventManager/EventListener.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/EventManager/EventListener.cpp b/src/EventManager/EventListener.cpp index 791ede17..7abd971d 100644 --- a/src/EventManager/EventListener.cpp +++ b/src/EventManager/EventListener.cpp @@ -59,8 +59,12 @@ namespace Bloom Logger::debug("Dispatching event " + event->getName() + " (" + std::to_string(event->id) + ")."); // Dispatch the event to all registered handlers - const auto mappingLock = this->eventTypeToCallbacksMapping.acquireLock(); - const auto& callbacks = this->eventTypeToCallbacksMapping.getValue().find(event->getType())->second; + auto callbacks = std::vector>(); + + { + const auto mappingLock = this->eventTypeToCallbacksMapping.acquireLock(); + callbacks = this->eventTypeToCallbacksMapping.getValue().find(event->getType())->second; + } for (auto& callback : callbacks) { callback(*(event.get()));