fixed crash when setting label to new map, fixed assert "Signature %d should not be used when transferred to trashgit add corelib/*git add corelib/*"

This commit is contained in:
Mathieu Labbe
2015-03-01 18:00:08 -05:00
parent 19a7ff9552
commit 34f4b3132d
2 changed files with 17 additions and 12 deletions

View File

@@ -400,7 +400,7 @@ void DBDriver::loadNodeData(std::list<Signature *> & signatures, bool loadMetric
for(std::list<Signature *>::iterator iter=signatures.begin(); iter!=signatures.end(); ++iter)
{
UASSERT(*iter != 0);
UASSERT_MSG(uContains(_trashSignatures, (*iter)->id()), uFormat("Signature %d should not be used when transferred to trash!!!!", (*iter)->id()).c_str());
UASSERT_MSG(!uContains(_trashSignatures, (*iter)->id()), uFormat("Signature %d should not be used when transferred to trash!!!!", (*iter)->id()).c_str());
}
}
_trashesMutex.unlock();

View File

@@ -694,7 +694,7 @@ void Memory::addSignatureToStm(Signature * signature, float poseRotVariance, flo
std::string tag = uFormat("map%d", signature->mapId());
if(getSignatureIdByLabel(tag, false) == 0)
{
UINFO("Tagging node %d with label \"%s\"", tag.c_str());
UINFO("Tagging node %d with label \"%s\"", signature->id(), tag.c_str());
signature->setLabel(tag);
}
}
@@ -705,7 +705,7 @@ void Memory::addSignatureToStm(Signature * signature, float poseRotVariance, flo
std::string tag = uFormat("map%d", signature->mapId());
if(getSignatureIdByLabel(tag, false) == 0)
{
UINFO("Tagging node %d with label \"%s\"", tag.c_str());
UINFO("Tagging node %d with label \"%s\"", signature->id(), tag.c_str());
signature->setLabel(tag);
}
}
@@ -1600,18 +1600,23 @@ const Signature * Memory::getLastWorkingSignature() const
int Memory::getSignatureIdByLabel(const std::string & label, bool lookInDatabase) const
{
UDEBUG("label=%s", label.c_str());
int id = 0;
for(std::map<int, Signature*>::const_iterator iter=_signatures.begin(); iter!=_signatures.end(); ++iter)
if(label.size())
{
if(iter->second->getLabel().compare(label) == 0)
for(std::map<int, Signature*>::const_iterator iter=_signatures.begin(); iter!=_signatures.end(); ++iter)
{
id = iter->second->id();
break;
UASSERT(iter->second != 0);
if(iter->second->getLabel().compare(label) == 0)
{
id = iter->second->id();
break;
}
}
if(id == 0 && _dbDriver && lookInDatabase)
{
_dbDriver->getNodeIdByLabel(label, id);
}
}
if(id == 0 && _dbDriver && lookInDatabase)
{
_dbDriver->getNodeIdByLabel(label, id);
}
return id;
}
@@ -2690,7 +2695,7 @@ cv::Mat Memory::getImageCompressed(int signatureId) const
Signature Memory::getSignatureData(int locationId, bool uncompressedData)
{
UDEBUG("");
UDEBUG("locationId=%d", locationId);
Signature r;
Signature * s = this->_getSignature(locationId);
if(s && !s->getImageCompressed().empty())