diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index 95d26ebad3d9321620fe40ba7e9484bea793ec62..13772140cfc6264e33d01119d86b1f8452268b59 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -1794,14 +1794,18 @@ static bool buildConsecutiveListOfVertices(GFace *gf, GEdgeLoop &gel,
 
     std::vector<MVertex*> edgeLoop;
     if(found._sign == 1){
-      edgeLoop.push_back(found.ge->getBeginVertex()->mesh_vertices[0]);
-      for(unsigned int i = 0; i <found.ge->mesh_vertices.size(); i++)
-        edgeLoop.push_back(found.ge->mesh_vertices[i]);
+      if(found.ge->getBeginVertex()){
+        edgeLoop.push_back(found.ge->getBeginVertex()->mesh_vertices[0]);
+        for(unsigned int i = 0; i <found.ge->mesh_vertices.size(); i++)
+          edgeLoop.push_back(found.ge->mesh_vertices[i]);
+      }
     }
     else{
-      edgeLoop.push_back(found.ge->getEndVertex()->mesh_vertices[0]);
-      for(int i = found.ge->mesh_vertices.size() - 1; i >= 0; i--)
-        edgeLoop.push_back(found.ge->mesh_vertices[i]);
+      if(found.ge->getEndVertex()){
+        edgeLoop.push_back(found.ge->getEndVertex()->mesh_vertices[0]);
+        for(int i = found.ge->mesh_vertices.size() - 1; i >= 0; i--)
+          edgeLoop.push_back(found.ge->mesh_vertices[i]);
+      }
     }
 
     if(MYDEBUG)