From bb95ea9ea68c78b94000dbb05db15a38e2c72df4 Mon Sep 17 00:00:00 2001
From: Amaury Johnan <amjohnen@gmail.com>
Date: Fri, 28 Oct 2016 09:41:41 +0000
Subject: [PATCH] add some delete[] & Remove createElement no more used, should
 use MElementFactory anyway

---
 Geo/MElement.cpp            | 86 -------------------------------------
 Geo/MElement.h              |  4 --
 Mesh/meshGFaceRecombine.cpp |  7 +++
 3 files changed, 7 insertions(+), 90 deletions(-)

diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp
index d6322bdacb..ad3e570db0 100644
--- a/Geo/MElement.cpp
+++ b/Geo/MElement.cpp
@@ -52,92 +52,6 @@ MElement::MElement(int num, int part) : _visible(1)
   }
 }
 
-MElement* MElement::createElement(int tag, const std::vector<MVertex*> &vertices,
-                                  int num, int part)
-{
-  const int type = ElementType::ParentTypeFromTag(tag);
-  const int order = ElementType::OrderFromTag(tag);
-  const bool serendipity = ElementType::SerendipityFromTag(tag) > 1;
-
-  if (order == 0) {
-    Msg::Error("p0 elements can not be created (tag %d)", tag);
-    return NULL;
-  }
-
-  switch (type) {
-
-  case TYPE_PNT:
-    return new MPoint(vertices, num, part);
-
-  case TYPE_LIN:
-    if (order == 1)
-      return new MLine(vertices, num, part);
-    else if (order == 2)
-      return new MLine3(vertices, num, part);
-    else
-      return new MLineN(vertices, num, part);
-
-  case TYPE_TRI:
-    if (order == 1)
-      return new MTriangle(vertices, num, part);
-    else if (order == 2)
-      return new MTriangle6(vertices, num, part);
-    else
-      return new MTriangleN(vertices, order, num, part);
-
-  case TYPE_QUA:
-    if (order == 1)
-      return new MQuadrangle(vertices, num, part);
-    else if (order == 2 && serendipity)
-      return new MQuadrangle8(vertices, num, part);
-    else if (order == 2)
-      return new MQuadrangle9(vertices, num, part);
-    else
-      return new MQuadrangleN(vertices, order, num, part);
-
-  case TYPE_TET:
-    if (order == 1)
-      return new MTetrahedron(vertices, num, part);
-    else if (order == 2)
-      return new MTetrahedron10(vertices, num, part);
-    else
-      return new MTetrahedronN(vertices, order, num, part);
-
-  case TYPE_PYR:
-    if (order == 1)
-      return new MPyramid(vertices, num, part);
-    else
-      return new MPyramidN(vertices, order, num, part);
-
-  case TYPE_PRI:
-    if (order == 1)
-      return new MPrism(vertices, num, part);
-    else if (order == 2 && serendipity)
-      return new MPrism15(vertices, num, part);
-    else if (order == 2)
-      return new MPrism18(vertices, num, part);
-    else
-      return new MPrismN(vertices, order, num, part);
-
-  case TYPE_TRIH:
-    return new MTrihedron(vertices, num, part);
-
-  case TYPE_HEX:
-    if (order == 1)
-      return new MHexahedron(vertices, num, part);
-    else if (order == 2 && serendipity)
-      return new MHexahedron20(vertices, num, part);
-    else if (order == 2)
-      return new MHexahedron27(vertices, num, part);
-    else
-      return new MHexahedronN(vertices, order, num, part);
-
-  default:
-    break;
-  }
-  return NULL;
-}
-
 void MElement::setTolerance(const double tol)
 {
   _isInsideTolerance = tol;
diff --git a/Geo/MElement.h b/Geo/MElement.h
index 8c3b84b5e0..50fc874c3c 100644
--- a/Geo/MElement.h
+++ b/Geo/MElement.h
@@ -47,10 +47,6 @@ class MElement
   MElement(int num=0, int part=0);
   virtual ~MElement(){}
 
-  // Create an element from tag
-  static MElement* createElement(int tag, const std::vector<MVertex*>&,
-                                 int num=0, int part=0);
-
   // set/get the tolerance for isInside() test
   static void setTolerance(const double tol);
   static double getTolerance();
diff --git a/Mesh/meshGFaceRecombine.cpp b/Mesh/meshGFaceRecombine.cpp
index 730710d27f..f2bc44a43a 100644
--- a/Mesh/meshGFaceRecombine.cpp
+++ b/Mesh/meshGFaceRecombine.cpp
@@ -117,6 +117,7 @@ namespace {
       for (int i = 0; i < numEdges; ++i) {
         edges[i]->print();
       }
+      delete[] v;
       return false;
     }
     for (int i = 2; i < numEdges; ++i) {
@@ -129,6 +130,7 @@ namespace {
         for (int i = 0; i < numEdges; ++i) {
           edges[i]->print();
         }
+        delete[] v;
         return false;
       }
     }
@@ -138,6 +140,7 @@ namespace {
       for (int i = 0; i < numEdges; ++i) {
         edges[i]->print();
       }
+      delete[] v;
       return false;
     }
      delete[] v;
@@ -4443,6 +4446,8 @@ double Rec2DVertex::/*vertQual_*/getGainMerge(const Rec2DVertex *rv,
     sumQualEdge -= Recombine2D::getWeightEdgeBase() * edges[i]->getQual();
   }
 
+  delete[] numAngle;
+  delete[] qualAngle;
   return Rec2DVertex::getQual(sumQualAngle/sumAngle,
                               sumQualEdge/sumEdge, numElem)
          - getQual() - rv->getQual()                        ;
@@ -4484,6 +4489,8 @@ double Rec2DVertex::/*vertEdgeQual_*/getGainMerge(const Rec2DVertex *rv) const
 
   int numElem = _elements.size() + rv->_elements.size() - 4;
   ans += getQualDegree(numElem) + sumQualAngle / sumAngle;
+  delete[] qualAngle;
+  delete[] angleWeight;
   return ans;
 }
 
-- 
GitLab