diff --git a/src/core/sal/Listener.cc b/src/core/sal/Listener.cc index 8b4660f9..c0a1c47f 100644 --- a/src/core/sal/Listener.cc +++ b/src/core/sal/Listener.cc @@ -3,6 +3,11 @@ namespace fail { +BaseListener::~BaseListener() +{ + simulator.removeListener(this); +} + bool TroubleListener::isMatching(const TroubleEvent* pEv) const { for (unsigned i = 0; i < m_WatchNumbers.size(); i++) { diff --git a/src/core/sal/Listener.hpp b/src/core/sal/Listener.hpp index 88e2e5bf..dbc265d6 100644 --- a/src/core/sal/Listener.hpp +++ b/src/core/sal/Listener.hpp @@ -30,7 +30,7 @@ public: BaseListener() : m_OccCounter(1), m_OccCounterInit(1), m_Parent(NULL), m_Loc(INVALID_INDEX), m_Home(NULL) { } - virtual ~BaseListener() { } // FIXME remove from queues + virtual ~BaseListener(); /** * This method is called when an experiment flow adds a new listener by * calling \c simulator.addListener() or \c simulator.addListenerAndResume().