Throw exception rather than assert (which crashes MATLAB)

release/4.3a0
Frank Dellaert 2011-11-04 16:56:19 +00:00
parent 9d7d563688
commit 9d4ba6acb9
1 changed files with 6 additions and 3 deletions

View File

@ -44,9 +44,12 @@ namespace gtsam {
void Factor<KEY>::assertInvariants() const {
#ifndef NDEBUG
// Check that keys are all unique
std::multiset<Key> nonunique(keys_.begin(), keys_.end());
std::set<Key> unique(keys_.begin(), keys_.end());
assert(nonunique.size() == unique.size() && std::equal(nonunique.begin(), nonunique.end(), unique.begin()));
std::multiset < Key > nonunique(keys_.begin(), keys_.end());
std::set < Key > unique(keys_.begin(), keys_.end());
bool correct = (nonunique.size() != unique.size())
&& std::equal(nonunique.begin(), nonunique.end(), unique.begin());
if (!correct)
throw std::logic_error("Factor::assertInvariants: detected inconsistency");
#endif
}