From 3d973f7c36208f56413533ea5e32f6b19f1b6eaf Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Fri, 18 Jan 2008 22:23:03 +0000 Subject: [PATCH] fix 2d mesh crash with vc++; 3d still crsahes --- Mesh/BDS.cpp | 40 +++++++++++++-------------- Mesh/meshGFace.cpp | 10 +++---- Mesh/meshGRegionDelaunayInsertion.cpp | 4 +-- 3 files changed, 25 insertions(+), 29 deletions(-) diff --git a/Mesh/BDS.cpp b/Mesh/BDS.cpp index 9730b05640..53fd8ea1ec 100644 --- a/Mesh/BDS.cpp +++ b/Mesh/BDS.cpp @@ -1,4 +1,4 @@ -// $Id: BDS.cpp,v 1.90 2008-01-18 20:02:28 geuzaine Exp $ +// $Id: BDS.cpp,v 1.91 2008-01-18 22:23:03 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -484,28 +484,26 @@ template < class IT > void DESTROOOY(IT beg, IT end) void BDS_Mesh::cleanup() { { - for (std::list<BDS_Face*> :: iterator it = triangles.begin(); - it != triangles.end(); - it++) - { - while (it != triangles.end() && (*it)->deleted) - { - delete *it; - it = triangles.erase (it); - } - } + std::list<BDS_Face*> :: iterator it = triangles.begin(); + while(it != triangles.end()){ + if((*it)->deleted){ + delete *it; + it = triangles.erase(it); + } + else + it++; + } } { - for (std::list<BDS_Edge*> :: iterator it = edges.begin(); - it != edges.end(); - it++) - { - while (it != edges.end() && (*it)->deleted) - { - delete *it; - it = edges.erase (it); - } - } + std::list<BDS_Edge*> :: iterator it = edges.begin(); + while(it != edges.end()){ + if((*it)->deleted){ + delete *it; + it = edges.erase(it); + } + else + it++; + } } } diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp index af3ef98356..776349d050 100644 --- a/Mesh/meshGFace.cpp +++ b/Mesh/meshGFace.cpp @@ -1,4 +1,4 @@ -// $Id: meshGFace.cpp,v 1.107 2008-01-18 20:02:28 geuzaine Exp $ +// $Id: meshGFace.cpp,v 1.108 2008-01-18 22:23:03 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -1486,8 +1486,6 @@ bool gmsh2DMeshGenerator ( GFace *gf , int RECUR_ITER, bool debug = true) } } - - it = emb_edges.begin(); while(it != emb_edges.end()) { @@ -1507,6 +1505,7 @@ bool gmsh2DMeshGenerator ( GFace *gf , int RECUR_ITER, bool debug = true) ++itt; } } + m->cleanup(); { @@ -1528,7 +1527,6 @@ bool gmsh2DMeshGenerator ( GFace *gf , int RECUR_ITER, bool debug = true) } - m->cleanup(); m->del_point(m->find_point(-1)); m->del_point(m->find_point(-2)); @@ -2254,8 +2252,8 @@ void meshGFace::operator() (GFace *gf) { Msg(DEBUG1, "Generating the mesh"); if(noseam (gf) || gf->getNativeType() == GEntity::GmshModel || gf->edgeLoops.empty()){ - gmsh2DMeshGenerator(gf,0, true); - //gmsh2DMeshGenerator(gf,0, false); + //gmsh2DMeshGenerator(gf,0, true); + gmsh2DMeshGenerator(gf,0, false); } else{ if(!gmsh2DMeshGeneratorPeriodic(gf,false)) diff --git a/Mesh/meshGRegionDelaunayInsertion.cpp b/Mesh/meshGRegionDelaunayInsertion.cpp index 38236bb153..914fda3de9 100644 --- a/Mesh/meshGRegionDelaunayInsertion.cpp +++ b/Mesh/meshGRegionDelaunayInsertion.cpp @@ -1,4 +1,4 @@ -// $Id: meshGRegionDelaunayInsertion.cpp,v 1.29 2008-01-18 20:02:28 geuzaine Exp $ +// $Id: meshGRegionDelaunayInsertion.cpp,v 1.30 2008-01-18 22:23:03 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -885,7 +885,7 @@ void insertVerticesInRegion (GRegion *gr) } } - + while (1) { if (allTets.begin() == allTets.end() ) break; -- GitLab