diff --git a/Mesh/Create.cpp b/Mesh/Create.cpp
index 150e62e40166fd19d11cdf69aa512b959bccb5be..d4b54ff0b668b7291bf7a3041c9d099845f4c35c 100644
--- a/Mesh/Create.cpp
+++ b/Mesh/Create.cpp
@@ -1,4 +1,4 @@
-// $Id: Create.cpp,v 1.16 2001-05-29 13:28:26 geuzaine Exp $
+// $Id: Create.cpp,v 1.17 2001-06-02 13:09:14 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -544,6 +544,8 @@ Surface * Create_Surface (int Num, int Typ, int Mat){
   pS->Orientations = NULL;
   pS->Support = pS;
   pS->Control_Points = List_Create (1, 10, sizeof (Vertex *));
+  pS->s.Generatrices = NULL;
+  pS->Edges = NULL;
   pS->Extrude = NULL;
   pS->STL = NULL;
   return (pS);
@@ -555,10 +557,12 @@ void Free_Surface(void *a, void *b){
     Tree_Action(pS->Simplexes, Free_Simplex);
     Tree_Delete(pS->Simplexes);
     List_Delete(pS->TrsfSimplexes);
-    Tree_Delete(pS->Vertices); //the vertices are freed globally before
+    //Tree_Delete(pS->Vertices);//fait planter l'extrusion (1D-2D-1D boum)
+                      //the vertices are freed globally before
     List_Delete(pS->TrsfVertices);
     List_Delete(pS->Contours);
     List_Delete(pS->Control_Points);
+    List_Delete(pS->s.Generatrices);
     Free(pS);
     pS = NULL;
   }
diff --git a/Mesh/Numeric.cpp b/Mesh/Numeric.cpp
index 59a7a5b26f611d692db403728c88d685ce3a311a..7772de5ffeaf5a2f95e255b0873648d7b190b28b 100644
--- a/Mesh/Numeric.cpp
+++ b/Mesh/Numeric.cpp
@@ -1,4 +1,4 @@
-// $Id: Numeric.cpp,v 1.14 2001-04-08 20:36:50 geuzaine Exp $
+// $Id: Numeric.cpp,v 1.15 2001-06-02 13:09:14 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -119,8 +119,8 @@ int sys3x3_with_tol (double mat[3][3], double b[3], double res[3], double *det){
 
   out = sys3x3(mat,b,res,det);
 
-  if (fabs(*det) < 1.e-12){
-    Msg(DEBUG, "Assuming 3x3 matrix is singular (is this OK?)");
+  if (fabs(*det) < 1.e-14){
+    Msg(DEBUG, "Assuming 3x3 matrix is singular (det == %g)", fabs(*det));
     res[0] = res[1] = res[2] = 0.0 ;
     return (0);
   }