Skip to content
Snippets Groups Projects
Commit 379fd2f2 authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

fix memory leak (patch from Cosmin Stefan Deaconu: thanks!)

parent 54410d0f
No related branches found
No related tags found
No related merge requests found
......@@ -27,6 +27,13 @@ void Tree_Delete(Tree_T * tree)
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;
......
......@@ -16,6 +16,7 @@ typedef struct {
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);
......
......@@ -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 @@ typedef struct{
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 @@ int allEdgesLinked(int ed, List_T *edges)
orientAndSortEdges(edges, links);
}
Tree_Delete(links);
Tree_Delete(links, freeLink);
Tree_Delete(points);
return found;
......@@ -305,7 +313,7 @@ int allFacesLinked(int fac, List_T *faces)
// necessary...
}
Tree_Delete(links);
Tree_Delete(links,freeLink);
Tree_Delete(edges);
return found;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment