From 6dca03621d1e5316a795cff646f0f7c34515ff8e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Vallv=C3=A9=20Navarro?= <jvallve@iri.upc.edu>
Date: Fri, 31 May 2019 16:29:27 +0200
Subject: [PATCH] bug fixes

---
 src/factor/factor_base.cpp     | 2 +-
 src/processor/track_matrix.cpp | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/factor/factor_base.cpp b/src/factor/factor_base.cpp
index bd5751fa8..11df542fb 100644
--- a/src/factor/factor_base.cpp
+++ b/src/factor/factor_base.cpp
@@ -138,7 +138,7 @@ void FactorBase::setStatus(FactorStatus _status)
 
 void FactorBase::link(FeatureBasePtr _ftr_ptr)
 {
-    if (this->getFeature() != _ftr_ptr)
+    if (this->getFeature() && this->getFeature() != _ftr_ptr)
         unlink();
 
     if(_ftr_ptr)
diff --git a/src/processor/track_matrix.cpp b/src/processor/track_matrix.cpp
index 9b5a4fa25..e38d33f31 100644
--- a/src/processor/track_matrix.cpp
+++ b/src/processor/track_matrix.cpp
@@ -46,9 +46,10 @@ void TrackMatrix::newTrack(FeatureBasePtr _ftr)
 
 void TrackMatrix::add(const SizeStd& _track_id, const FeatureBasePtr& _ftr)
 {
-    assert( tracks_.count(_track_id) != 0 &&  "Provided track ID does not exist. Use newTrack() instead.");
+    assert(( tracks_.count(_track_id) != 0 || _track_id == track_id_count_) &&  "Provided track ID does not exist. Use newTrack() instead.");
     assert( _ftr->getCapture() != nullptr && "adding a feature not linked to any capture");
 
+    _ftr->setTrackId(_track_id);
     tracks_[_track_id].emplace(_ftr->getCapture()->getTimeStamp(), _ftr);
     snapshots_[_ftr->getCapture()->id()].emplace(_track_id, _ftr);        // will create new snapshot if _cap_id   is not present
 }
-- 
GitLab