fix a potential memory leak for URDF files with multiple materials using the same name

This commit is contained in:
Erwin Coumans
2017-03-30 13:30:38 -07:00
parent 9d05b46de2
commit b1cbc3d4b0

View File

@@ -620,6 +620,15 @@ bool UrdfParser::parseVisual(UrdfModel& model, UrdfVisual& visual, TiXmlElement*
if (parseMaterial(visual.m_geometry.m_localMaterial, mat,logger))
{
UrdfMaterial* matPtr = new UrdfMaterial(visual.m_geometry.m_localMaterial);
UrdfMaterial** oldMatPtrPtr = model.m_materials[matPtr->m_name.c_str()];
if (oldMatPtrPtr)
{
UrdfMaterial* oldMatPtr = *oldMatPtrPtr;
model.m_materials.remove(matPtr->m_name.c_str());
if (oldMatPtr)
delete oldMatPtr;
}
model.m_materials.insert(matPtr->m_name.c_str(),matPtr);
visual.m_geometry.m_hasLocalMaterial = true;
}