diff --git a/Post/PViewDataListIO.cpp b/Post/PViewDataListIO.cpp
index f174dc91189370105d4fa9a08da3283a298d91bf..26965d842d6b5fd3a757be6d4ebc9745fd817ad0 100644
--- a/Post/PViewDataListIO.cpp
+++ b/Post/PViewDataListIO.cpp
@@ -577,6 +577,7 @@ bool PViewDataList::writeMSH(const std::string &fileName, double version, bool b
     if(!pos.insert(vertices[i]))
       unique.push_back(vertices[i]);
   }
+  vertices.clear();
 
   std::map<MVertex *, nodeData> vertexData;
 
@@ -654,18 +655,16 @@ bool PViewDataList::writeMSH(const std::string &fileName, double version, bool b
       fprintf(fp, "3\n%d\n%d\n%d\n", ts, numComponents, size);
 
     if(forceNodeData){
-      for(unsigned int i = 0; i < vertices.size(); i++){
-        MVertex *v = vertices[i];
-        if(v->getIndex() > 0){
-          fprintf(fp, "%d", v->getIndex());
-          int nbnod = vertexData[v].nbnod;
-          int nod = vertexData[v].nod;
-          double *d = vertexData[v].data;
-          for(int j = 0; j < numComponents; j++)
-            fprintf(fp, " %.16g",
-                    d[numComponents * nbnod * ts + numComponents * nod + j]);
-          fprintf(fp, "\n");
-        }
+      for(unsigned int i = 0; i < unique.size(); i++){
+        MVertex *v = unique[i];
+        fprintf(fp, "%d", v->getIndex());
+        int nbnod = vertexData[v].nbnod;
+        int nod = vertexData[v].nod;
+        double *d = vertexData[v].data;
+        for(int j = 0; j < numComponents; j++)
+          fprintf(fp, " %.16g",
+                  d[numComponents * nbnod * ts + numComponents * nod + j]);
+        fprintf(fp, "\n");
       }
       fprintf(fp, "$EndNodeData\n");
     }