diff --git a/Mesh/Read_Mesh.cpp b/Mesh/Read_Mesh.cpp
index 647a970230edac2e925f62b0bea6b16677e7e8b4..6224f31fc54c490001f5cabbafdbcfb9e5cd803d 100644
--- a/Mesh/Read_Mesh.cpp
+++ b/Mesh/Read_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Read_Mesh.cpp,v 1.33 2001-12-03 10:38:31 gyselinc Exp $
+// $Id: Read_Mesh.cpp,v 1.34 2001-12-03 10:55:48 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Geo.h"
@@ -42,7 +42,7 @@ void Read_Mesh_MSH (Mesh *M, FILE *File_GEO){
 
   char String[256];
   int  Nbr_Nodes, Nbr_Elements, i_Node, i_Element;
-  int  Num, Type, Physical, Elementary, i, j;
+  int  Num, Type, Physical, Elementary, i, j, replace;
   double x , y , z, lc1, lc2 ;
   Vertex *vert , verts[NB_NOD_MAX_ELM] ,*vertsp[NB_NOD_MAX_ELM] , **vertspp;
   Simplex *simp ;
@@ -204,49 +204,51 @@ void Read_Mesh_MSH (Mesh *M, FILE *File_GEO){
 	    simp->Num = Num ;
 	    simp->iEnt = Elementary ;
 	    Tree_Replace(s->Simplexes, &simp) ;
-	    Tree_Replace(M->Simplexes, &simp) ;
-	    M->Statistics[7]++;
+	    replace = Tree_Replace(M->Simplexes, &simp) ;
+	    if(!replace) M->Statistics[7]++;
 	    break;
 	  case QUA1:
 	    simp = Create_Quadrangle(vertsp[0], vertsp[1], vertsp[2], vertsp[3]);
 	    simp->Num = Num ;
 	    simp->iEnt = Elementary ;
 	    Tree_Replace(s->Simplexes, &simp) ;
-	    Tree_Replace(M->Simplexes, &simp) ;
-	    M->Statistics[7]++;//since s->Simplexes holds quads, too :-(
-	    M->Statistics[8]++;
+	    replace = Tree_Replace(M->Simplexes, &simp) ;
+	    if(!replace) {
+	      M->Statistics[7]++;//since s->Simplexes holds quads, too :-(
+	      M->Statistics[8]++;
+	    }
 	    break;
 	  case TET1:
 	    simp = Create_Simplex(vertsp[0], vertsp[1], vertsp[2], vertsp[3]);
 	    simp->Num = Num ;
 	    simp->iEnt = Elementary ;
 	    Tree_Replace(v->Simplexes, &simp) ;
-	    Tree_Replace(M->Simplexes, &simp) ;
-	    M->Statistics[9]++;
+	    replace = Tree_Replace(M->Simplexes, &simp) ;
+	    if(!replace) M->Statistics[9]++;
 	    break;
 	  case HEX1:
 	    hex = Create_Hexahedron(vertsp[0], vertsp[1], vertsp[2], vertsp[3],
 				    vertsp[4], vertsp[5], vertsp[6], vertsp[7]);
 	    hex->Num = Num ;
 	    hex->iEnt = Elementary ;
-	    Tree_Replace(v->Hexahedra, &hex) ;
-	    M->Statistics[10]++;
+	    replace = Tree_Replace(v->Hexahedra, &hex) ;
+	    if(!replace) M->Statistics[10]++;
 	    break;
 	  case PRI1:
 	    pri = Create_Prism(vertsp[0], vertsp[1], vertsp[2], 
 			       vertsp[3], vertsp[4], vertsp[5]);
 	    pri->Num = Num ;
 	    pri->iEnt = Elementary ;
-	    Tree_Replace(v->Prisms, &pri) ;
-	    M->Statistics[11]++;
+	    replace = Tree_Replace(v->Prisms, &pri) ;
+	    if(!replace) M->Statistics[11]++;
 	    break;
 	  case PYR1:
 	    pyr = Create_Pyramid(vertsp[0], vertsp[1], vertsp[2], 
 				 vertsp[3], vertsp[4]);
 	    pyr->Num = Num ;
 	    pyr->iEnt = Elementary ;
-	    Tree_Replace(v->Pyramids, &pyr) ;
-	    M->Statistics[12]++;
+	    replace = Tree_Replace(v->Pyramids, &pyr) ;
+	    if(!replace) M->Statistics[12]++;
 	    break;
 	  case PNT:
 	    break;