corrected bug in the UpdateTopology::EdgeEdge function: it touched a vector element beyond .end()

This commit is contained in:
Paolo Cignoni 2012-04-22 09:01:04 +00:00
parent 39df21640a
commit 4c44513d4f
1 changed files with 7 additions and 3 deletions

View File

@ -467,10 +467,12 @@ static void EdgeEdge(MeshType &m)
int ne = 0; // Numero di edge reali
typename std::vector<PVertexEdge>::iterator pe,ps;
for(ps = v.begin(),pe=v.begin();pe<=v.end();++pe) // Scansione vettore ausiliario
// for(ps = v.begin(),pe=v.begin();pe<=v.end();++pe) // Scansione vettore ausiliario
ps = v.begin();pe=v.begin();
do
{
// printf("v %i -> e %i\n",tri::Index(m,(*ps).v),tri::Index(m,(*ps).e));
if( pe==v.end() || *pe != *ps ) // Trovo blocco di edge uguali
if( pe==v.end() || !(*pe == *ps) ) // Trovo blocco di edge uguali
{
typename std::vector<PVertexEdge>::iterator q,q_next;
for (q=ps;q<pe-1;++q) // Scansione edge associati
@ -491,7 +493,9 @@ static void EdgeEdge(MeshType &m)
ps = pe;
++ne; // Aggiorno il numero di edge
}
}
if(pe==v.end()) break;
++pe;
} while(true);
}
static void VertexEdge(MeshType &m)