diff --git a/server/src/core/abstractevent.cpp b/server/src/core/abstractevent.cpp index 5aea361d..0f87d817 100644 --- a/server/src/core/abstractevent.cpp +++ b/server/src/core/abstractevent.cpp @@ -30,6 +30,12 @@ AbstractEvent::AbstractEvent(Object& object, std::string_view name, EventFlags f { } +AbstractEvent::~AbstractEvent() +{ + while(!m_handlers.empty()) + m_handlers.front()->disconnect(); +} + void AbstractEvent::connect(std::shared_ptr handler) { assert(handler); diff --git a/server/src/core/abstractevent.hpp b/server/src/core/abstractevent.hpp index 8ffe4385..ec8c7f70 100644 --- a/server/src/core/abstractevent.hpp +++ b/server/src/core/abstractevent.hpp @@ -43,6 +43,7 @@ class AbstractEvent : public InterfaceItem public: AbstractEvent(Object& object, std::string_view name, EventFlags m_flags); + ~AbstractEvent() override; inline bool isScriptable() const { return (m_flags & EventFlags::Scriptable) == EventFlags::Scriptable; }