diff --git a/src/osgUtil/Simplifier.cpp b/src/osgUtil/Simplifier.cpp index c3339a45e..5090d870b 100644 --- a/src/osgUtil/Simplifier.cpp +++ b/src/osgUtil/Simplifier.cpp @@ -812,8 +812,11 @@ public: } //osg::notify(osg::NOTICE)<<" pNew="<_triangles.begin(); - teitr!=edge->_triangles.end(); + + // we copy the edge's _triangles to and interate the copy of the triangle set to avoid invalidating iterators. + TriangleSet trianglesToRemove = edge->_triangles; + for(TriangleSet::iterator teitr=trianglesToRemove.begin(); + teitr!=trianglesToRemove.end(); ++teitr) { Triangle* triangle = const_cast(teitr->get());