diff --git a/src/polymesh/formats/obj.cc b/src/polymesh/formats/obj.cc
index 1e4c65a729f3f524f5c60123ffc53197151f257d..600d6b3646a4d32f01b45608846e240d19197c50 100644
--- a/src/polymesh/formats/obj.cc
+++ b/src/polymesh/formats/obj.cc
@@ -345,11 +345,13 @@ void obj_reader<ScalarT>::parse(std::istream& in, Mesh& mesh)
             int i0, i1;
             line >> i0;
             line >> i1;
+            mesh.edges().add_or_get(mesh[vertex_index(i0 - 1)], mesh[vertex_index(i1 - 1)]);
+
             while (line.good())
             {
-                mesh.edges().add_or_get(mesh[vertex_index(i0 - 1)], mesh[vertex_index(i1 - 1)]);
                 i0 = i1;
                 line >> i1;
+                mesh.edges().add_or_get(mesh[vertex_index(i0 - 1)], mesh[vertex_index(i1 - 1)]);
             }
         }