diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp
index 66c0d6dbe3427a9519eb5fd72484bed5c54a0118..93415dd82f7e976e93dfb40e1a3b1181fbecaa8b 100644
--- a/Geo/GFace.cpp
+++ b/Geo/GFace.cpp
@@ -285,10 +285,12 @@ std::vector<MVertex*> GFace::getEmbeddedMeshVertices() const
   for(std::list<GEdge *>::const_iterator it = embedded_edges.begin();
       it != embedded_edges.end(); it++){
     tmp.insert((*it)->mesh_vertices.begin(), (*it)->mesh_vertices.end());
-    tmp.insert((*it)->getBeginVertex()->mesh_vertices.begin(),
-               (*it)->getBeginVertex()->mesh_vertices.end());
-    tmp.insert((*it)->getEndVertex()->mesh_vertices.begin(),
-               (*it)->getEndVertex()->mesh_vertices.end());
+    if((*it)->getBeginVertex())
+      tmp.insert((*it)->getBeginVertex()->mesh_vertices.begin(),
+                 (*it)->getBeginVertex()->mesh_vertices.end());
+    if((*it)->getEndVertex())
+      tmp.insert((*it)->getEndVertex()->mesh_vertices.begin(),
+                 (*it)->getEndVertex()->mesh_vertices.end());
   }
   for(std::list<GVertex *>::const_iterator it = embedded_vertices.begin();
       it != embedded_vertices.end(); it++){
@@ -694,7 +696,7 @@ void GFace::computeMeshSizeFieldAccuracy(double &avg,double &max_e, double &min_
   double oneoversqr2 = 1. / sqrt(2.);
   double sqr2 = sqrt(2.);
   for (std::set<MEdge, Less_Edge>::const_iterator it = es.begin();
-       it != es.end();++it){
+       it != es.end(); ++it){
     double u1,v1,u2,v2;
     MVertex *vert1 =  it->getVertex(0);
     vert1->getParameter(0, u1);
@@ -1327,7 +1329,7 @@ int GFace::genusGeom() const
   int nSeams = 0;
   std::set<GEdge*> single_seams;
   for (std::list<GEdge*>::const_iterator it = l_edges.begin();
-       it!=l_edges.end();++it){
+       it != l_edges.end(); ++it){
     if ((*it)->isSeam(this)){
       nSeams++;
       std::set<GEdge*>::iterator it2 = single_seams.find(*it);
@@ -1390,8 +1392,8 @@ bool GFace::fillPointCloud(double maxDist,
 
 
 #if defined(HAVE_MESH)
-static void meshCompound (GFace* gf, bool verbose) {
-
+static void meshCompound (GFace* gf, bool verbose)
+{
   discreteFace *df = new discreteFace (gf->model(), gf->tag() + 100000);
 
   std::set<int> ec;
@@ -1403,8 +1405,10 @@ static void meshCompound (GFace* gf, bool verbose) {
       if (found == ec.end())ec.insert((*it)->tag());
       else ec.erase(found);
     }
-    df->triangles.insert(df->triangles.end(), c->triangles.begin(),c->triangles.end());
-    df->mesh_vertices.insert(df->mesh_vertices.end(), c->mesh_vertices.begin(),c->mesh_vertices.end());
+    df->triangles.insert(df->triangles.end(), c->triangles.begin(),
+                         c->triangles.end());
+    df->mesh_vertices.insert(df->mesh_vertices.end(), c->mesh_vertices.begin(),
+                             c->mesh_vertices.end());
     for (unsigned int j=0;j<c->triangles.size();j++)df->_CAD.push_back(c);
     c->triangles.clear();
     c->mesh_vertices.clear();
@@ -1426,7 +1430,7 @@ void GFace::mesh(bool verbose)
   if (!_compound.empty()){ // Some faces are meshed together
     if (_compound[0] == this){ //  I'm the one that makes the compound job
       bool ok = true;
-      for (unsigned int i=0;i<_compound.size();i++){
+      for (unsigned int i = 0; i < _compound.size(); i++){
 	GFace *gf = (GFace*)_compound[i];
 	ok &= (gf->meshStatistics.status == GFace::DONE);
       }
@@ -1516,7 +1520,7 @@ void GFace::setMeshMaster(GFace* master, const std::vector<double>& tfo)
   std::set<GVertex*> l_vertices;
   std::map<std::pair<GVertex*,GVertex*>,GEdge* > l_vtxToEdge;
 
-  for (eIter=l_edges.begin();eIter!=l_edges.end();++eIter) {
+  for (eIter=l_edges.begin();eIter!=l_edges.end(); ++eIter) {
     GVertex* v0 = (*eIter)->getBeginVertex();
     GVertex* v1 = (*eIter)->getEndVertex();
     l_vertices.insert(v0);
@@ -1524,7 +1528,7 @@ void GFace::setMeshMaster(GFace* master, const std::vector<double>& tfo)
     l_vtxToEdge[std::make_pair(v0,v1)] = (*eIter);
   }
 
-  for (eIter=embedded_edges.begin();eIter!=embedded_edges.end();++eIter) {
+  for (eIter=embedded_edges.begin();eIter!=embedded_edges.end(); ++eIter) {
     GVertex* v0 = (*eIter)->getBeginVertex();
     GVertex* v1 = (*eIter)->getEndVertex();
     l_vertices.insert(v0);
@@ -1539,7 +1543,7 @@ void GFace::setMeshMaster(GFace* master, const std::vector<double>& tfo)
   std::list<GEdge*> m_edges = master->edges();
   std::set<GVertex*> m_vertices;
   std::map<std::pair<GVertex*,GVertex*>,GEdge* > m_vtxToEdge;
-  for (eIter=m_edges.begin();eIter!=m_edges.end();++eIter) {
+  for (eIter=m_edges.begin();eIter!=m_edges.end(); ++eIter) {
     GVertex* v0 = (*eIter)->getBeginVertex();
     GVertex* v1 = (*eIter)->getEndVertex();
     m_vertices.insert(v0);
@@ -1581,7 +1585,7 @@ void GFace::setMeshMaster(GFace* master, const std::vector<double>& tfo)
   std::map<GVertex*,GVertex*> gVertexCounterparts;
 
   std::set<GVertex*>::iterator mvIter;
-  for (mvIter=m_vertices.begin();mvIter!=m_vertices.end();++mvIter) {
+  for (mvIter=m_vertices.begin();mvIter!=m_vertices.end(); ++mvIter) {
 
     GVertex* m_vertex = *mvIter;
 
@@ -1597,7 +1601,7 @@ void GFace::setMeshMaster(GFace* master, const std::vector<double>& tfo)
     GVertex* l_vertex = NULL;
 
     std::set<GVertex*>::iterator lvIter = l_vertices.begin();
-    for (;lvIter!=l_vertices.end();++lvIter) {
+    for (;lvIter!=l_vertices.end(); ++lvIter) {
 
       SPoint3 xyz((*lvIter)->x(),(*lvIter)->y(),(*lvIter)->z());
       SVector3 dist = xyz - xyzTfo;
@@ -1743,8 +1747,7 @@ void GFace::setMeshMaster(GFace* master,const std::map<int,int>& edgeCopies)
 {
   std::map<GVertex*,GVertex*> vs2vt;
 
-  for (std::list<GEdge*>::iterator it=l_edges.begin();it!=l_edges.end();++it){
-
+  for (std::list<GEdge*>::iterator it = l_edges.begin(); it != l_edges.end(); ++it){
     // slave edge
     GEdge* le = *it;