diff --git a/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshEdges.C b/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshEdges.C
index 72a27c7bc3806b630e56c7c4b3f1a0aa2dbc6f0b..01c7ec471c682bebb2b24bd646f46e13773bcbc6 100644
--- a/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshEdges.C
+++ b/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshEdges.C
@@ -56,7 +56,14 @@ Foam::label Foam::primitiveMesh::getEdge
     // Make new edge.
     label edgeI = es.size();
     pe[pointi].append(edgeI);
-    pe[nextPointi].append(edgeI);
+
+    if (nextPointi != pointi)
+    {
+        // Very occasionally (e.g. blockMesh) a face can have duplicate
+        // vertices. Make sure we register pointEdges only once.
+        pe[nextPointi].append(edgeI);
+    }
+
     if (pointi < nextPointi)
     {
         es.append(edge(pointi, nextPointi));