diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp
index de7d9376db3b9a240a6de011f5ca21fb833ce041..859cba4c1092c923c5f7df7a95c60b0a2b34b76c 100644
--- a/Mesh/HighOrder.cpp
+++ b/Mesh/HighOrder.cpp
@@ -260,10 +260,15 @@ static void getEdgeVertices(GEdge *ge, MElement *ele, std::vector<MVertex*> &ve,
   if (!gotVertOnGeo)
     interpVerticesInExistingEdge(ge, ele, veEdge, nPts);
   newHOVert.insert(newHOVert.end(), veEdge.begin(), veEdge.end());
-  if(increasing) // Add newly created vertices to list
-    edgeVertices[p].insert(edgeVertices[p].end(), veEdge.begin(), veEdge.end());
-  else
-    edgeVertices[p].insert(edgeVertices[p].end(), veEdge.rbegin(), veEdge.rend());
+  if (edgeVertices.count(p) == 0) {
+    if (increasing) // Add newly created vertices to list
+      edgeVertices[p].insert(edgeVertices[p].end(), veEdge.begin(), veEdge.end());
+    else
+      edgeVertices[p].insert(edgeVertices[p].end(), veEdge.rbegin(), veEdge.rend());
+  }
+  else {  // Vertices already exist
+    Msg::Error("Edges from different entities share vertices: create a finer mesh");
+  }
   ve.insert(ve.end(), veEdge.begin(), veEdge.end());
 }