diff options
-rw-r--r-- | src/sim/probe/probe.cc | 8 | ||||
-rw-r--r-- | src/sim/probe/probe.hh | 6 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/sim/probe/probe.cc b/src/sim/probe/probe.cc index 6f1a3d535..600d9dcc4 100644 --- a/src/sim/probe/probe.cc +++ b/src/sim/probe/probe.cc @@ -62,11 +62,17 @@ ProbeListenerObject::~ProbeListenerObject() listeners.clear(); } -ProbeListener::ProbeListener(ProbeManager *manager, const std::string &name) +ProbeListener::ProbeListener(ProbeManager *_manager, const std::string &_name) + : manager(_manager), name(_name) { manager->addListener(name, *this); } +ProbeListener::~ProbeListener() +{ + manager->removeListener(name, *this); +} + ProbeListenerObject* ProbeListenerObjectParams::create() { diff --git a/src/sim/probe/probe.hh b/src/sim/probe/probe.hh index 5a0bf11c9..2946f4664 100644 --- a/src/sim/probe/probe.hh +++ b/src/sim/probe/probe.hh @@ -104,7 +104,11 @@ class ProbeListener { public: ProbeListener(ProbeManager *manager, const std::string &name); - virtual ~ProbeListener() {} + virtual ~ProbeListener(); + + protected: + ProbeManager *const manager; + const std::string name; }; /** |