From e8a844b3c571a105ab30d6d4b0abff78ba6974ea Mon Sep 17 00:00:00 2001
From: Francois Keith <keith@lirmm.fr>
Date: Wed, 19 Mar 2014 23:28:15 +0100
Subject: [PATCH] Correct signal destruction in rosSubscription.

---
 src/ros_subscribe.cpp | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/ros_subscribe.cpp b/src/ros_subscribe.cpp
index 3679159..4c1f02c 100644
--- a/src/ros_subscribe.cpp
+++ b/src/ros_subscribe.cpp
@@ -183,7 +183,16 @@ namespace dynamicgraph
 
   void RosSubscribe::rm (const std::string& signal)
   {
+    std::string signalTs = signal+"Timestamp";
+
+    signalDeregistration(signal);
     bindedSignal_.erase (signal);
+
+    if(bindedSignal_.find(signalTs) != bindedSignal_.end())
+    {
+       signalDeregistration(signalTs);
+       bindedSignal_.erase(signalTs);
+    }
   }
 
   std::string RosSubscribe::list ()
@@ -199,7 +208,12 @@ namespace dynamicgraph
 
   void RosSubscribe::clear ()
   {
-    bindedSignal_.clear ();
+    std::map<std::string, bindedSignal_t>::iterator it = bindedSignal_.begin();
+    for(; it!= bindedSignal_.end(); )
+    {
+      rm(it->first);
+      it = bindedSignal_.begin();
+    }
   }
 
   std::string RosSubscribe::getDocString () const
-- 
GitLab