Hi everyone,
There is a memory leak when using addRuledFaces from the C++ API. I
believe the attached patch fixes it.
-Cosmin
Index: Geo/findLinks.cpp
===================================================================
--- Geo/findLinks.cpp (revision 17649)
+++ Geo/findLinks.cpp (working copy)
@@ -5,6 +5,7 @@
#include <stdlib.h>
#include "GmshMessage.h"
+#include "MallocUtils.h"
#include "GModel.h"
#include "TreeUtils.h"
#include "ListUtils.h"
@@ -18,6 +19,13 @@
List_T *l;
}lnk;
+
+static void freeLink(void * link)
+{
+ List_Delete(((lnk*) link)->l);
+ Free(link);
+}
+
static int complink(const void *a, const void *b)
{
lnk *q = (lnk*)a;
@@ -193,7 +201,7 @@
orientAndSortEdges(edges, links);
}
- Tree_Delete(links);
+ Tree_Delete(links, freeLink);
Tree_Delete(points);
return found;
@@ -305,7 +313,7 @@
// necessary...
}
- Tree_Delete(links);
+ Tree_Delete(links,freeLink);
Tree_Delete(edges);
return found;
Index: Common/TreeUtils.h
===================================================================
--- Common/TreeUtils.h (revision 17649)
+++ Common/TreeUtils.h (working copy)
@@ -16,6 +16,7 @@
Tree_T *Tree_Create(int size, int (*fcmp)(const void *a, const void *b));
void Tree_Delete(Tree_T *Tree);
+void Tree_Delete(Tree_T *Tree, void (*freefn)(void * ) );
void *Tree_Add(Tree_T *tree, void *data);
int Tree_Nbr(Tree_T *Tree);
int Tree_Insert(Tree_T *Tree, void *data);
Index: Common/TreeUtils.cpp
===================================================================
--- Common/TreeUtils.cpp (revision 17649)
+++ Common/TreeUtils.cpp (working copy)
@@ -27,6 +27,13 @@
Free(tree);
}
+void Tree_Delete(Tree_T * tree, void (*freefn) (void * ))
+{
+ if(!tree) return;
+ avl_free_table(tree->root, freefn, 0);
+ Free(tree);
+}
+
void *Tree_Add(Tree_T * tree, void *data)
{
if(!tree) return 0;
_______________________________________________
gmsh mailing list
[email protected]
http://www.geuz.org/mailman/listinfo/gmsh