Fixed potential memory leak

This commit is contained in:
Robert Osfield
2012-03-23 11:20:17 +00:00
parent 1feea279a5
commit eb9f545d67

View File

@@ -459,23 +459,22 @@ template< typename T >
void daeReader::processSinglePPrimitive(osg::Geode* geode,
const domMesh* pDomMesh, const T* group, SourceMap& sources, GLenum mode)
{
osg::Geometry *geometry = new osg::Geometry();
osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry();
if (NULL != group->getMaterial())
geometry->setName(group->getMaterial());
osg::DrawElementsUInt* pDrawElements = new osg::DrawElementsUInt(mode);
geometry->addPrimitiveSet(pDrawElements);
osg::ref_ptr<osg::DrawElementsUInt> pDrawElements = new osg::DrawElementsUInt(mode);
geometry->addPrimitiveSet(pDrawElements.get());
domP_Array domPArray;
domPArray.append(group->getP());
std::vector<std::vector<GLuint> > indexLists;
resolveMeshArrays(domPArray, group->getInput_array(), pDomMesh,
geometry, sources, indexLists);
if (indexLists.front().size())
resolveMeshArrays(domPArray, group->getInput_array(), pDomMesh, geometry, sources, indexLists);
if (!indexLists.front().empty())
{
pDrawElements->asVector().swap(indexLists.front());
geode->addDrawable( geometry );
geode->addDrawable( geometry.get() );
}
}