From b07fa4dcb7a84cba0d5ff5fe33e1de55f7582d88 Mon Sep 17 00:00:00 2001 From: adrian Date: Thu, 27 Sep 2012 09:59:20 +0000 Subject: [PATCH] Listener objects will now be removed when their scope ends. git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1700 8c4709b5-6ec9-48aa-a5cd-a96041d1645a --- src/core/sal/Listener.cc | 5 +++++ src/core/sal/Listener.hpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) 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().