diff --git a/src/mesh/meshGRegionDelaunayInsertion.cpp b/src/mesh/meshGRegionDelaunayInsertion.cpp
index f0ea5672c19a9e61861cacc9c1a2f1eee994d62d..eb6b31db775cdc34aa4ef50d96548dfc6d0fb65a 100644
--- a/src/mesh/meshGRegionDelaunayInsertion.cpp
+++ b/src/mesh/meshGRegionDelaunayInsertion.cpp
@@ -80,7 +80,7 @@ struct edgeContainerB {
   std::size_t _size, _size_obj;
 
   edgeContainerB(std::size_t N = 1000000)
-    : _hash(N), _size(0), _size_obj(sizeof(MEdge))
+    : _hash(N > 0 ? N : 1), _size(0), _size_obj(sizeof(MEdge))
   {
   }
 
@@ -1350,9 +1350,15 @@ void insertVerticesInRegion(GRegion *gr, int maxIter,
     (*it)->setNeigh(2, nullptr);
     (*it)->setNeigh(3, nullptr);
   }
-  // store all embedded faces
+  // store all embedded edges and faces
   std::set<MFace, MFaceLessThan> allEmbeddedFaces;
-  edgeContainerB allEmbeddedEdges;
+  std::size_t N = 0;
+  for(auto it = gr->model()->firstRegion(); it != gr->model()->lastRegion();
+      ++it) {
+    for(auto e : (*it)->embeddedEdges())
+      N += e->getNumMeshElements();
+  }
+  edgeContainerB allEmbeddedEdges(N);
   for(auto it = gr->model()->firstRegion(); it != gr->model()->lastRegion();
       ++it) {
     createAllEmbeddedFaces((*it), allEmbeddedFaces);