diff --git a/Tree.cpp b/Tree.cpp index 4c97432..c911a49 100644 --- a/Tree.cpp +++ b/Tree.cpp @@ -2350,6 +2350,8 @@ Tree::TraceLoopLabelCell( const POLYLINEVECTOR& vplPolygons) Point3d ptCurr ; auto iter = find( m_vnLeaves.begin(), m_vnLeaves.end(), nId) ; int nIdPolygon = distance( m_vnLeaves.begin(), iter) ; + if ( nIdPolygon > int( vplPolygons.size()) - 1) + return false ; bool bEraseNextPoint = false ; while ( plLoop.GetNextPoint( ptCurr)) { Point3d ptTStart, ptTEnd ; @@ -2385,6 +2387,8 @@ Tree::TraceLoopLabelCell( const POLYLINEVECTOR& vplPolygons) // ricalcolo la posizione di nId nel vettore delle foglie iter = find( m_vnLeaves.begin(), m_vnLeaves.end(), nId) ; nIdPolygon = distance( m_vnLeaves.begin(), iter) ; + if ( nIdPolygon > int( vplPolygons.size()) - 1) + return false ; // aggiorno il puntatore alla cella pCell = &m_mTree[nId] ; // salvo il verso del loop