diff --git a/gtsam/nonlinear/NonlinearFactorGraph.cpp b/gtsam/nonlinear/NonlinearFactorGraph.cpp index 5f6cdcc98..0b876f376 100644 --- a/gtsam/nonlinear/NonlinearFactorGraph.cpp +++ b/gtsam/nonlinear/NonlinearFactorGraph.cpp @@ -205,42 +205,49 @@ void NonlinearFactorGraph::saveGraph(std::ostream &stm, const Values& values, // Create factors and variable connections for(size_t i = 0; i < size(); ++i) { const NonlinearFactor::shared_ptr& factor = at(i); - if(formatting.plotFactorPoints) { + // If null pointer, move on to the next + if (!factor) { + continue; + } + + if (formatting.plotFactorPoints) { const KeyVector& keys = factor->keys(); - if (formatting.binaryEdges && keys.size()==2) { - stm << " var" << keys[0] << "--" << "var" << keys[1] << ";\n"; + if (formatting.binaryEdges && keys.size() == 2) { + stm << " var" << keys[0] << "--" + << "var" << keys[1] << ";\n"; } else { // Make each factor a dot stm << " factor" << i << "[label=\"\", shape=point"; { - map::const_iterator pos = formatting.factorPositions.find(i); - if(pos != formatting.factorPositions.end()) - stm << ", pos=\"" << formatting.scale*(pos->second.x() - minX) << "," - << formatting.scale*(pos->second.y() - minY) << "!\""; + map::const_iterator pos = + formatting.factorPositions.find(i); + if (pos != formatting.factorPositions.end()) + stm << ", pos=\"" << formatting.scale * (pos->second.x() - minX) + << "," << formatting.scale * (pos->second.y() - minY) + << "!\""; } stm << "];\n"; // Make factor-variable connections - if(formatting.connectKeysToFactor && factor) { - for(Key key: *factor) { - stm << " var" << key << "--" << "factor" << i << ";\n"; + if (formatting.connectKeysToFactor && factor) { + for (Key key : *factor) { + stm << " var" << key << "--" + << "factor" << i << ";\n"; } } } - } - else { - if(factor) { - Key k; - bool firstTime = true; - for(Key key: *this->at(i)) { - if(firstTime) { - k = key; - firstTime = false; - continue; - } - stm << " var" << key << "--" << "var" << k << ";\n"; + } else { + Key k; + bool firstTime = true; + for (Key key : *this->at(i)) { + if (firstTime) { k = key; + firstTime = false; + continue; } + stm << " var" << key << "--" + << "var" << k << ";\n"; + k = key; } } }