From a469d60ed2660fe87e7d073d8902aee0a3eb3895 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 30 Jun 2016 09:54:13 +0100 Subject: [PATCH] Added handling of null dynamic_cast. --- src/osgPlugins/gles/TriangleStripVisitor.cpp | 29 +++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/osgPlugins/gles/TriangleStripVisitor.cpp b/src/osgPlugins/gles/TriangleStripVisitor.cpp index 47e430f1b..0b8efd94e 100644 --- a/src/osgPlugins/gles/TriangleStripVisitor.cpp +++ b/src/osgPlugins/gles/TriangleStripVisitor.cpp @@ -61,21 +61,24 @@ void TriangleStripVisitor::mergeTrianglesStrip(osg::Geometry& geometry) else if (ps->getType() == osg::PrimitiveSet::DrawArraysPrimitiveType) { // trip strip can generate drawarray of 5 elements we want to merge them too osg::DrawArrays* da = dynamic_cast (ps); - // if connection needed insert degenerate triangles - if (ndw->getNumIndices() != 0 && ndw->back() != da->getFirst()) { - // duplicate last vertex - ndw->addElement(ndw->back()); - // insert first vertex of next strip - ndw->addElement(da->getFirst()); - } + if (da) + { + // if connection needed insert degenerate triangles + if (ndw->getNumIndices() != 0 && ndw->back() != da->getFirst()) { + // duplicate last vertex + ndw->addElement(ndw->back()); + // insert first vertex of next strip + ndw->addElement(da->getFirst()); + } - if (ndw->getNumIndices() % 2 != 0 ) { - // add a dummy vertex to reverse the strip - ndw->addElement(da->getFirst()); - } + if (ndw->getNumIndices() % 2 != 0 ) { + // add a dummy vertex to reverse the strip + ndw->addElement(da->getFirst()); + } - for (unsigned int j = 0; j < da->getNumIndices(); j++) { - ndw->addElement(da->getFirst() + j); + for (unsigned int j = 0; j < da->getNumIndices(); j++) { + ndw->addElement(da->getFirst() + j); + } } } }