From 2a5098eacb310f20bc6f8515101225b5b85c670c Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 30 Jun 2016 10:01:18 +0100 Subject: [PATCH] Added handling of null pointer --- src/osgPlugins/gles/DrawArrayVisitor | 36 ++++++++++++++++------------ 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/osgPlugins/gles/DrawArrayVisitor b/src/osgPlugins/gles/DrawArrayVisitor index 7c101bb60..435e08d4e 100644 --- a/src/osgPlugins/gles/DrawArrayVisitor +++ b/src/osgPlugins/gles/DrawArrayVisitor @@ -35,11 +35,14 @@ public: case osg::PrimitiveSet::DrawArraysPrimitiveType: { osg::DrawArrays* dw = dynamic_cast(ps); - unsigned int start = dst.size(); - osg::DrawArrays* ndw = new osg::DrawArrays(dw->getMode(), start, dw->getNumIndices()); - newGeometry->getPrimitiveSetList().push_back(ndw); - for ( unsigned int j = 0; j < dw->getNumIndices(); j++) { - srcArrays.append(dw->getFirst()+j, dst); + if (dw) + { + unsigned int start = dst.size(); + osg::DrawArrays* ndw = new osg::DrawArrays(dw->getMode(), start, dw->getNumIndices()); + newGeometry->getPrimitiveSetList().push_back(ndw); + for ( unsigned int j = 0; j < dw->getNumIndices(); j++) { + srcArrays.append(dw->getFirst()+j, dst); + } } } break; @@ -60,17 +63,20 @@ public: case osg::PrimitiveSet::DrawArrayLengthsPrimitiveType: { osg::DrawArrayLengths* dal = dynamic_cast(ps); - unsigned int start = dst.size(); - unsigned int offset = dal->getFirst(); - unsigned int totalDrawArraysVertexes = 0; - for (unsigned int j = 0; j < dal->size(); j++) { - totalDrawArraysVertexes += (*dal)[j]; - } - osg::DrawArrays* ndw = new osg::DrawArrays(dal->getMode(), start, totalDrawArraysVertexes); - newGeometry->getPrimitiveSetList().push_back(ndw); + if (dal) + { + unsigned int start = dst.size(); + unsigned int offset = dal->getFirst(); + unsigned int totalDrawArraysVertexes = 0; + for (unsigned int j = 0; j < dal->size(); j++) { + totalDrawArraysVertexes += (*dal)[j]; + } + osg::DrawArrays* ndw = new osg::DrawArrays(dal->getMode(), start, totalDrawArraysVertexes); + newGeometry->getPrimitiveSetList().push_back(ndw); - for (unsigned int v = 0; v < totalDrawArraysVertexes; v++) { - srcArrays.append(offset + v, dst); + for (unsigned int v = 0; v < totalDrawArraysVertexes; v++) { + srcArrays.append(offset + v, dst); + } } } break;