From 84903d05c2846014fda650921e5f948ea60774cb Mon Sep 17 00:00:00 2001 From: Richard Roberts Date: Tue, 4 Jun 2013 17:34:03 +0000 Subject: [PATCH] Fixed iSAM2 bug where assignment operator and copy constructor may cause null pointer exception when trying to clone cached linear factors, which become null by calling marginalizeLeaves with linear factor caching enabled. --- gtsam/nonlinear/ISAM2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtsam/nonlinear/ISAM2.cpp b/gtsam/nonlinear/ISAM2.cpp index 9b063f0ce..a209c3d44 100644 --- a/gtsam/nonlinear/ISAM2.cpp +++ b/gtsam/nonlinear/ISAM2.cpp @@ -125,7 +125,7 @@ ISAM2& ISAM2::operator=(const ISAM2& rhs) { linearFactors_ = GaussianFactorGraph(); linearFactors_.reserve(rhs.linearFactors_.size()); BOOST_FOREACH(const GaussianFactor::shared_ptr& linearFactor, rhs.linearFactors_) { - linearFactors_.push_back(linearFactor->clone()); } + linearFactors_.push_back(linearFactor ? linearFactor->clone() : GaussianFactor::shared_ptr()); } ordering_ = rhs.ordering_; params_ = rhs.params_;