From 77697393fe906cf321138973a77c6512cfca8f2d Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sat, 27 Aug 2011 20:41:49 +0000
Subject: [PATCH] don't crash if meshMaster is not available (can happen e.g.
 if tag has been changed after face creation)

---
 Mesh/meshGFace.cpp | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index a49803fc0c..e3bb665277 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -1537,15 +1537,19 @@ void meshGFace::operator() (GFace *gf)
   if(MeshExtrudedSurface(gf)) return;
   if(gf->meshMaster() != gf->tag()){
     GFace *gff = gf->model()->getFaceByTag(abs(gf->meshMaster()));
-    if (gff->meshStatistics.status != GFace::DONE){
-      gf->meshStatistics.status = GFace::PENDING;
+    if(gff){
+      if (gff->meshStatistics.status != GFace::DONE){
+        gf->meshStatistics.status = GFace::PENDING;
+        return;
+      }
+      Msg::Info("Meshing face %d (%s) as a copy of %d", gf->tag(), 
+                gf->getTypeString().c_str(), gf->meshMaster());
+      copyMesh(gff, gf);
+      gf->meshStatistics.status = GFace::DONE;
       return;
     }
-    Msg::Info("Meshing face %d (%s) as a copy of %d", gf->tag(), 
-              gf->getTypeString().c_str(), gf->meshMaster());
-    copyMesh(gff, gf);
-    gf->meshStatistics.status = GFace::DONE;
-    return;    
+    else
+      Msg::Warning("Unknown mesh master face %d", abs(gf->meshMaster()));
   }
 
   const char *algo = "Unknown";
-- 
GitLab