From 67fb28a4eddba173dbb607bcecd0fe949d5b6d5a Mon Sep 17 00:00:00 2001
From: joanvallve <jvallve@iri.upc.edu>
Date: Fri, 14 Oct 2016 13:11:41 +0200
Subject: [PATCH] destruct instead of delete

---
 src/capture_base.cpp                    | 2 +-
 src/examples/test_processor_odom_3D.cpp | 7 ++++---
 src/feature_base.cpp                    | 2 +-
 src/frame_base.cpp                      | 2 +-
 src/frame_base.h                        | 4 ++--
 src/hardware_base.cpp                   | 2 +-
 src/hardware_base.h                     | 2 +-
 src/landmark_base.cpp                   | 1 +
 8 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/src/capture_base.cpp b/src/capture_base.cpp
index 1cceb9197..24f54d1e2 100644
--- a/src/capture_base.cpp
+++ b/src/capture_base.cpp
@@ -26,7 +26,7 @@ CaptureBase::~CaptureBase()
     is_deleting_ = true;
     while (!feature_list_.empty())
     {
-        delete feature_list_.front();
+        feature_list_.front()->destruct();
         feature_list_.pop_front();
     }
 }
diff --git a/src/examples/test_processor_odom_3D.cpp b/src/examples/test_processor_odom_3D.cpp
index da3511e90..9dbc7cf26 100644
--- a/src/examples/test_processor_odom_3D.cpp
+++ b/src/examples/test_processor_odom_3D.cpp
@@ -106,15 +106,16 @@ int main (int argc, char** argv)
 
     Scalar dt = 0.1;
 
+    CaptureMotion* cap_odo = new CaptureMotion(TimeStamp(0), sen, data);
+
     cout << "t: " << 0 << "  \t\t\t x = ( " << problem->getCurrentState().transpose() << ")" << endl;
     print(problem);
     cout << "--------------------------------------------------------------" << endl;
 
     for (TimeStamp t = dt; t < tf - Constants::EPS; t += dt)
     {
-
-        CaptureMotion* cap_odo = new CaptureMotion(t, sen, data);
-
+        cap_odo->setTimeStamp(t);
+        cap_odo->setData(data);
         cap_odo->process();
 
         cout << "t: " << t.get() << "  \t\t x = ( " << problem->getCurrentState().transpose() << ")" << endl;
diff --git a/src/feature_base.cpp b/src/feature_base.cpp
index 4b49c9dd7..4fb1db87f 100644
--- a/src/feature_base.cpp
+++ b/src/feature_base.cpp
@@ -51,7 +51,7 @@ FeatureBase::~FeatureBase()
 
     while (!constraint_list_.empty())
     {
-        delete constraint_list_.front();
+        constraint_list_.front()->destruct();
         constraint_list_.pop_front();
     }
 
diff --git a/src/frame_base.cpp b/src/frame_base.cpp
index 910d64ff5..af86a010c 100644
--- a/src/frame_base.cpp
+++ b/src/frame_base.cpp
@@ -76,7 +76,7 @@ FrameBase::~FrameBase()
 
     while (!capture_list_.empty())
     {
-        delete capture_list_.front();
+        capture_list_.front()->destruct();
         capture_list_.pop_front();
     }
 
diff --git a/src/frame_base.h b/src/frame_base.h
index 5317e643e..be960ba39 100644
--- a/src/frame_base.h
+++ b/src/frame_base.h
@@ -234,14 +234,14 @@ inline void FrameBase::removeCapture(const CaptureBaseIter& _capt_iter)
 {
     //std::cout << "removing capture " << (*_capt_iter)->nodeId() << " from Frame " << nodeId() << std::endl;
     capture_list_.erase(_capt_iter);
-    delete *_capt_iter;
+    //delete *_capt_iter;
 }
 
 inline void FrameBase::removeCapture(const CaptureBasePtr _capt_ptr)
 {
     //std::cout << "removing capture " << (*_capt_iter)->nodeId() << " from Frame " << nodeId() << std::endl;
     capture_list_.remove(_capt_ptr);
-    delete _capt_ptr;
+    //delete _capt_ptr;
 }
 
 inline StateStatus FrameBase::getStatus() const
diff --git a/src/hardware_base.cpp b/src/hardware_base.cpp
index 0b9c3fef9..221d824ce 100644
--- a/src/hardware_base.cpp
+++ b/src/hardware_base.cpp
@@ -38,7 +38,7 @@ SensorBasePtr HardwareBase::addSensor(SensorBasePtr _sensor_ptr)
 void HardwareBase::removeSensor(SensorBasePtr _sensor_ptr)
 {
     sensor_list_.remove(_sensor_ptr);
-    delete _sensor_ptr;
+//    delete _sensor_ptr;
 }
 
 } // namespace wolf
diff --git a/src/hardware_base.h b/src/hardware_base.h
index 663f62c25..410157e8c 100644
--- a/src/hardware_base.h
+++ b/src/hardware_base.h
@@ -55,7 +55,7 @@ namespace wolf {
 inline void HardwareBase::removeSensor(const SensorBaseIter& _sensor_iter)
 {
     sensor_list_.erase(_sensor_iter);
-    delete * _sensor_iter;
+//    delete * _sensor_iter;
 //    removeDownNode(_sensor_iter);
 }
 
diff --git a/src/landmark_base.cpp b/src/landmark_base.cpp
index 52a35b928..3516fb855 100644
--- a/src/landmark_base.cpp
+++ b/src/landmark_base.cpp
@@ -46,6 +46,7 @@ LandmarkBase::~LandmarkBase()
 	{
 	    //std::cout << "destruct() constraint " << (*constrained_by_list_.begin())->nodeId() << std::endl;
 	    constrained_by_list_.front()->destruct();
+	    constrained_by_list_.pop_front();
         //std::cout << "deleted " << std::endl;
 	}
 	//std::cout << "constraints deleted" << std::endl;
-- 
GitLab