diff --git a/Mesh/2D_Links.cpp b/Mesh/2D_Links.cpp
index ad8f06a28571f60398e269347eb7fa6224286918..51a52883cd77114865d2b5945cbb6553ddef447b 100644
--- a/Mesh/2D_Links.cpp
+++ b/Mesh/2D_Links.cpp
@@ -1,4 +1,4 @@
-// $Id: 2D_Links.cpp,v 1.7 2001-04-08 20:36:49 geuzaine Exp $
+// $Id: 2D_Links.cpp,v 1.8 2001-06-25 13:30:57 remacle Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -79,6 +79,8 @@ int Conversion(DocPeek doc ){
   /* nombre de triangles que l'on doit obtenir */
   count2 = 2 * (n - 1) - count2;        
         
+  if(doc->delaunay)Free (doc->delaunay);
+
   doc->delaunay = (Delaunay *) Malloc(2*count2 * sizeof(Delaunay));
 
   for (i=0;i<n;i++){
diff --git a/Mesh/2D_Mesh.cpp b/Mesh/2D_Mesh.cpp
index 4c85908fe56acfc8e78fa21534a361c1a1f46490..2ed9ba2226f8ecd1d6c45b8540f8ea51972a0123 100644
--- a/Mesh/2D_Mesh.cpp
+++ b/Mesh/2D_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: 2D_Mesh.cpp,v 1.27 2001-06-06 21:29:58 remacle Exp $
+// $Id: 2D_Mesh.cpp,v 1.28 2001-06-25 13:30:57 remacle Exp $
 
 /*
    Maillage Delaunay d'une surface (Point insertion Technique)
@@ -456,6 +456,7 @@ int mesh_domain (ContourPeek * ListContours, int numcontours,
   gPointArray = doc->points;
 
   numaloc = nump;
+  doc->delaunay = 0;
   doc->numPoints = nump;
   doc->numTriangles = 0;
   mai->numtriangles = 0;
@@ -819,6 +820,9 @@ int mesh_domain (ContourPeek * ListContours, int numcontours,
       mai->listdel[i]->t.b = a;
     }
   }
+  // MEMORY LEAK (JF)
+  //  Free(doc->delaunay);
+  //  doc->delaunay = 0;
   return 1;
 }
 
@@ -929,7 +933,11 @@ void Maillage_Automatique_VieuxCode (Surface * pS, Mesh * m, int ori){
       s->iEnt = pS->Num;
       Tree_Insert (pS->Simplexes, &s);
     }
+    // MEMORY LEAK (JF)
+    //    Free(M.listdel[i]);
   }
+  // ANOTHER ONE (JF)
+  Free (M.listdel);
   Free (gPointArray);
 }
 
@@ -938,6 +946,7 @@ void Make_Mesh_With_Points (DocRecord * ptr, PointRecord * Liste, int Numpoints)
   ptr->numTriangles = 0;
   ptr->points = Liste;
   ptr->numPoints = Numpoints;
+  ptr->delaunay = 0;
   DelaunayAndVoronoi (ptr);
   Conversion (ptr);
   remove_all_dlist (ptr->numPoints, ptr->points);
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index 369f1f01934443b11f000a51d5d7e38b9cc58720..b884eb77bca5ee2d4a5bbe123b5ad8d2f682c0d3 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -1,4 +1,4 @@
-// $Id: Generator.cpp,v 1.21 2001-06-25 13:05:16 geuzaine Exp $
+// $Id: Generator.cpp,v 1.22 2001-06-25 13:30:57 remacle Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -242,6 +242,13 @@ void mai3d (Mesh * M, int Asked){
       (Asked < oldstatus && Asked > 1)){
     Msg(STATUS2, "Mesh 2D...");
     t1 = Cpu();
+
+    if(M->status == 3)
+      {
+	OpenProblem (CTX.filename);
+	Maillage_Dimension_1 (M);
+      }
+
     Maillage_Dimension_2 (M);
     t2 = Cpu();
     Msg(STATUS2, "Mesh 2D complete (%g s)", t2 - t1);
diff --git a/Mesh/Print_Mesh.cpp b/Mesh/Print_Mesh.cpp
index 64f82969753ecf74d532605a6625d300d40b481b..aa0c15e8067c758a3c301d4d9d88627a27b8ce09 100644
--- a/Mesh/Print_Mesh.cpp
+++ b/Mesh/Print_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Print_Mesh.cpp,v 1.22 2001-06-25 13:05:16 geuzaine Exp $
+// $Id: Print_Mesh.cpp,v 1.23 2001-06-25 13:30:57 remacle Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -133,16 +133,16 @@ void add_msh_simplex (void *a, void *b){
       type = TETRAHEDRON;
   }
   
-#if 0 // JF, je comprends pas !?
+#if 1 // JF, je comprends pas !?
   if(type == TETRAHEDRON)
     {
-      if ((*S)->Volume_Simplexe () > 0){
+      if ((*S)->Volume_Simplexe () < 0){
         Vertex *temp;
         temp = (*S)->V[0];
         (*S)->V[0] = (*S)->V[1];
         (*S)->V[1] = temp;
 	//        if ((*S)->Volume_Simplexe () < 0)
-          Msg(WARNING, "Negative volume for simplex %d", (*S)->Num);
+	//          Msg(WARNING, "Negative volume for simplex %d", (*S)->Num);
       }
     }
 #endif
diff --git a/Mesh/Read_Mesh.cpp b/Mesh/Read_Mesh.cpp
index ea48cf249f0487cc73fede0cc7b593c1624999a8..e245d4d0f2c46a84f0dc20e5091f0672480a1b1f 100644
--- a/Mesh/Read_Mesh.cpp
+++ b/Mesh/Read_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Read_Mesh.cpp,v 1.16 2001-06-02 19:44:35 remacle Exp $
+// $Id: Read_Mesh.cpp,v 1.17 2001-06-25 13:30:57 remacle Exp $
 
 #include "Gmsh.h"
 #include "Geo.h"
@@ -144,11 +144,11 @@ void Read_Mesh_MSH (Mesh *M, FILE *File_GEO){
 	    
 	    switch(Type){
 	    case LGN1:
-	      simp = Create_Simplex(vertsp[0], vertsp[1], NULL , NULL);
-	      simp->Num = Num ;
-	      simp->iEnt = Elementary ;
-	      Tree_Insert(c->Simplexes, &simp) ;
-	      Tree_Insert(M->Simplexes, &simp) ; 
+	      //simp = Create_Simplex(vertsp[0], vertsp[1], NULL , NULL);
+	      //simp->Num = Num ;
+	      //simp->iEnt = Elementary ;
+	      //Tree_Insert(c->Simplexes, &simp) ;
+	      //Tree_Insert(M->Simplexes, &simp) ; 
 	      break;
 	    case TRI1:
 	      simp = Create_Simplex(vertsp[0], vertsp[1], vertsp[2], NULL);