summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sim/probe/probe.cc8
-rw-r--r--src/sim/probe/probe.hh6
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;
};
/**