From fb434fba9de4ecfb867dc9a08782bb2bbe289346 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Sol=C3=A0?= <jsola@iri.upc.edu>
Date: Wed, 7 Aug 2019 16:45:08 +0200
Subject: [PATCH] Move advanceDerived to before last_ptr_->frame->remove()

---
 src/processor/processor_tracker.cpp | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/processor/processor_tracker.cpp b/src/processor/processor_tracker.cpp
index 988b80668..c70b06943 100644
--- a/src/processor/processor_tracker.cpp
+++ b/src/processor/processor_tracker.cpp
@@ -210,12 +210,14 @@ void ProcessorTracker::processCapture(CaptureBasePtr _incoming_ptr)
                 getProblem()->auxFrameCallback(last_ptr_->getFrame(), std::static_pointer_cast<ProcessorBase>(shared_from_this()), params_tracker_->time_tolerance);
 
                 // Advance this
+                advanceDerived();
+
+                // Replace last frame for a new one in incoming
                 last_ptr_->getFrame()->addCapture(incoming_ptr_); // Add incoming Capture to the tracker's last Frame
                 // do not remove! last_ptr_->remove();
                 incoming_ptr_->getFrame()->setTimeStamp(incoming_ptr_->getTimeStamp());
 
                 // Update pointers
-                advanceDerived();
                 last_ptr_   = incoming_ptr_;
                 incoming_ptr_ = nullptr;
             }*/
@@ -224,14 +226,16 @@ void ProcessorTracker::processCapture(CaptureBasePtr _incoming_ptr)
                 // We do not create a KF
 
                 // Advance this
+                advanceDerived();
+
+                // Replace last frame for a new one in incoming
                 FrameBasePtr frm = getProblem()->emplaceFrame(NON_ESTIMATED, last_ptr_->getFrame()->getState(), incoming_ptr_->getTimeStamp());
                 incoming_ptr_->link(frm);
                 last_ptr_->getFrame()->remove(); // implicitly calling last_ptr_->remove();
 
                 // Update pointers
-                advanceDerived();
-                last_ptr_   = incoming_ptr_;
-                incoming_ptr_ = nullptr;
+                last_ptr_       = incoming_ptr_;
+                incoming_ptr_   = nullptr;
             }
             break;
         }
-- 
GitLab