From b62d020c7f18d15bfbf31364a7954cb0ac7a4d5c Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Thu, 2 Aug 2001 07:59:44 +0000
Subject: [PATCH] cleaning

---
 Mesh/3D_Extrude.cpp | 65 +++++++++++++++++++--------------------------
 1 file changed, 28 insertions(+), 37 deletions(-)

diff --git a/Mesh/3D_Extrude.cpp b/Mesh/3D_Extrude.cpp
index 8907f44391..1112e929f0 100644
--- a/Mesh/3D_Extrude.cpp
+++ b/Mesh/3D_Extrude.cpp
@@ -1,4 +1,4 @@
-// $Id: 3D_Extrude.cpp,v 1.16 2001-08-02 07:26:13 geuzaine Exp $
+// $Id: 3D_Extrude.cpp,v 1.17 2001-08-02 07:59:44 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -53,11 +53,8 @@ void InitExtrude (){
 
   List_Delete(l1);
   List_Delete(l2);
-
-  //Vertex_Bound = THEM->Vertices;
 }
 
-/* MEMORY LEAK JF */
 void ExitExtrude (){
   if (Tree_Ares)Tree_Delete(Tree_Ares);
   if (Tree_Swaps)Tree_Delete(Tree_Swaps);
@@ -339,10 +336,9 @@ void Extrude_Vertex (void *data, void *dum){
   pV = (Vertex **) data;
   v = *pV;
 
-  // BUG FOR MULTIPLE POINTS IN EXTRUSION No: 1 point can be extruded
-  // along several directions
-  // (cf. benchmarks/3d/Torus-ExtrMesh.geo). The return was OK for the
-  // old mesh generator (only 1 extrusion)
+  // We should _not_ return here, since 1 point can be extruded along
+  // several directions (this was of course not the case in the old
+  // extrusion generator...)
   if (v->Extruded_Points) //return;
     List_Delete (v->Extruded_Points);
 
@@ -356,7 +352,6 @@ void Extrude_Vertex (void *data, void *dum){
       ep->Extrude (i, j + 1, newv->Pos.X, newv->Pos.Y, newv->Pos.Z);
 
       if (Vertex_Bound && (pV = (Vertex **) Tree_PQuery (Vertex_Bound, &newv))){
-	// MEMORY LEAK (JF)
 	Free_Vertex (&newv,0);
         List_Add (v->Extruded_Points, pV);
         if (ToAdd)
@@ -412,23 +407,22 @@ void Extrude_Seg (Vertex * V1, Vertex * V2){
         if (are_exist (v3, v2, Tree_Ares)){
           s = Create_Simplex (v3, v2, v1, NULL);
           s->iEnt = THES->Num;
-	  s->Num = -s->Num; //Trick to tag triangles to re-extrude!
+	  s->Num = -s->Num; //Tag triangles to re-extrude
           Tree_Add (THES->Simplexes, &s);
           s = Create_Simplex (v3, v4, v2, NULL);
           s->iEnt = THES->Num;
-	  s->Num = -s->Num; //Trick to tag triangles to re-extrude!
+	  s->Num = -s->Num; //Tag triangles to re-extrude
           Tree_Add (THES->Simplexes, &s);
         }
         else{
-	  /// BUG FOUND FOR NON MATCHING SURFACES
           are_cree (v1, v4, Tree_Ares);
           s = Create_Simplex (v3, v4, v1, NULL);
           s->iEnt = THES->Num;
-	  s->Num = -s->Num; //Trick to tag triangles to re-extrude!
+	  s->Num = -s->Num; //Tag triangles to re-extrude
           Tree_Add (THES->Simplexes, &s);
           s = Create_Simplex (v1, v4, v2, NULL);
           s->iEnt = THES->Num;
-	  s->Num = -s->Num; //Trick to tag triangles to re-extrude!
+	  s->Num = -s->Num; //Tag triangles to re-extrude
           Tree_Add (THES->Simplexes, &s);
         }
       }
@@ -465,10 +459,10 @@ int Extrude_Mesh (Curve * c){
 
   InitExtrude();
 
-  //  Vertex_Bound = NULL;
-  ep = c->Extrude;
+  //Vertex_Bound = NULL;
+  //Tree_Ares = Tree_Swaps = NULL;
 
-  //  Tree_Ares = Tree_Swaps = NULL;
+  ep = c->Extrude;
 
   if (ep->geo.Mode == EXTRUDED_ENTITY){
     Extrude_Vertex (&c->beg, NULL);
@@ -534,12 +528,10 @@ void copy_mesh (Surface * from, Surface * to){
     ep->Extrude (ep->mesh.NbLayer - 1, ep->mesh.NbElmLayer[ep->mesh.NbLayer - 1],
                  v1->Pos.X, v1->Pos.Y, v1->Pos.Z);
     
-    if (Vertex_Bound && (pV = (Vertex **) Tree_PQuery (Vertex_Bound, &v1)))
-      {
-	// MEMORY LEAK (JF)
-	Free_Vertex(&v1,0);
-	v1 = *pV;
-      }
+    if (Vertex_Bound && (pV = (Vertex **) Tree_PQuery (Vertex_Bound, &v1))){
+      Free_Vertex(&v1,0);
+      v1 = *pV;
+    }
     else{
       Tree_Insert (THEM->Vertices, &v1);
       Tree_Insert (Vertex_Bound, &v1);
@@ -553,12 +545,10 @@ void copy_mesh (Surface * from, Surface * to){
     ep->Extrude (ep->mesh.NbLayer - 1, ep->mesh.NbElmLayer[ep->mesh.NbLayer - 1],
                  v2->Pos.X, v2->Pos.Y, v2->Pos.Z);
     
-    if (Vertex_Bound && (pV = (Vertex **) Tree_PQuery (Vertex_Bound, &v2)))
-      {
-	// MEMORY LEAK (JF)
-	Free_Vertex(&v2,0);
-	v2 = *pV;
-      }
+    if (Vertex_Bound && (pV = (Vertex **) Tree_PQuery (Vertex_Bound, &v2))){
+      Free_Vertex(&v2,0);
+      v2 = *pV;
+    }
     else{
       Tree_Insert (THEM->Vertices, &v2);
       Tree_Insert (Vertex_Bound, &v2);
@@ -572,12 +562,10 @@ void copy_mesh (Surface * from, Surface * to){
     ep->Extrude (ep->mesh.NbLayer - 1, ep->mesh.NbElmLayer[ep->mesh.NbLayer - 1],
                  v3->Pos.X, v3->Pos.Y, v3->Pos.Z);
     
-    if (Vertex_Bound && (pV = (Vertex **) Tree_PQuery (Vertex_Bound, &v3)))
-      {
-	// MEMORY LEAK (JF)
-	Free_Vertex(&v3,0);
-	v3 = *pV;
-      }
+    if (Vertex_Bound && (pV = (Vertex **) Tree_PQuery (Vertex_Bound, &v3))){
+      Free_Vertex(&v3,0);
+      v3 = *pV;
+    }
     else{
       Tree_Insert (THEM->Vertices, &v3);
       Tree_Insert (Vertex_Bound, &v3);
@@ -598,13 +586,16 @@ int Extrude_Mesh (Surface * s){
   Curve *cc;
   extern int FACE_DIMENSION;
 
-  InitExtrude ();
   if (!s->Extrude)
     return 0;
   if (!s->Extrude->mesh.ExtrudeMesh)
     return false;
+
+  InitExtrude ();
+
+  //Vertex_Bound = Tree_Create (sizeof (Vertex *), comparePosition);
+
   FACE_DIMENSION = 2;
-  //  Vertex_Bound = Tree_Create (sizeof (Vertex *), comparePosition);
 
   ep = s->Extrude;
   THES = s;
-- 
GitLab