diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index 5da3b577d94677f5b3089936a73bbf618077b5f2..35e2746c743c29c07987b5c04ed4b5a6909e10e7 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -1391,24 +1391,28 @@ bool meshGenerator(GFace *gf, int RECUR_ITER,
   }
   //gf->triangles.clear();
   //gf->quadrangles.clear();
-  gf->deleteMesh();
+
+  // only delete the mesh data stored in the base GFace class (calling
+  // gf->deleteMesh() would also destroy e.g. the data in a compound face, which
+  // we should not do)
+  gf->GFace::deleteMesh();
 
   Msg::Debug("Starting to add internal points");
   // start mesh generation
   if(!algoDelaunay2D(gf) && !onlyInitialMesh){
-       // if(CTX::instance()->mesh.recombineAll || gf->meshAttributes.recombine || 1) {
-       //   backgroundMesh::unset();
-       //   buildBackGroundMesh (gf);
-       // }
+    // if(CTX::instance()->mesh.recombineAll || gf->meshAttributes.recombine || 1) {
+    //   backgroundMesh::unset();
+    //   buildBackGroundMesh (gf);
+    // }
     refineMeshBDS(gf, *m, CTX::instance()->mesh.refineSteps, true,
                   &recoverMapInv);
     optimizeMeshBDS(gf, *m, 2);
     refineMeshBDS(gf, *m, CTX::instance()->mesh.refineSteps, false,
                 &recoverMapInv);
     optimizeMeshBDS(gf, *m, 2);
-       // if(CTX::instance()->mesh.recombineAll || gf->meshAttributes.recombine || 1) {
-       //   backgroundMesh::unset();
-       // }
+    // if(CTX::instance()->mesh.recombineAll || gf->meshAttributes.recombine || 1) {
+    //   backgroundMesh::unset();
+    // }
   }
 
   /*
@@ -1426,7 +1430,8 @@ bool meshGenerator(GFace *gf, int RECUR_ITER,
   BDS2GMSH(m, gf, recoverMap);
 
   bool infty = false;
-  if (gf->getMeshingAlgo() == ALGO_2D_FRONTAL_QUAD || gf->getMeshingAlgo() == ALGO_2D_PACK_PRLGRMS)
+  if (gf->getMeshingAlgo() == ALGO_2D_FRONTAL_QUAD ||
+      gf->getMeshingAlgo() == ALGO_2D_PACK_PRLGRMS)
     infty = true;
   if (!onlyInitialMesh) {
     if (infty)