corrected bug in the UpdateTopology::EdgeEdge function: it touched a vector element beyond .end()
This commit is contained in:
parent
39df21640a
commit
4c44513d4f
|
@ -467,10 +467,12 @@ static void EdgeEdge(MeshType &m)
|
||||||
int ne = 0; // Numero di edge reali
|
int ne = 0; // Numero di edge reali
|
||||||
|
|
||||||
typename std::vector<PVertexEdge>::iterator pe,ps;
|
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));
|
// 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;
|
typename std::vector<PVertexEdge>::iterator q,q_next;
|
||||||
for (q=ps;q<pe-1;++q) // Scansione edge associati
|
for (q=ps;q<pe-1;++q) // Scansione edge associati
|
||||||
|
@ -491,7 +493,9 @@ static void EdgeEdge(MeshType &m)
|
||||||
ps = pe;
|
ps = pe;
|
||||||
++ne; // Aggiorno il numero di edge
|
++ne; // Aggiorno il numero di edge
|
||||||
}
|
}
|
||||||
}
|
if(pe==v.end()) break;
|
||||||
|
++pe;
|
||||||
|
} while(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void VertexEdge(MeshType &m)
|
static void VertexEdge(MeshType &m)
|
||||||
|
|
Loading…
Reference in New Issue