Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorover0219 <over0219@umn.edu>2020-06-12 18:03:18 +0300
committerover0219 <over0219@umn.edu>2020-06-12 18:03:18 +0300
commit4ff3bb13e35fb190c8510bf4daa7ded0a0c3b777 (patch)
tree137a294b91069991d5ea8c1b1f544b515a0066e1 /source
parenta6c7484d1b898e5535e4a4a8a852420498b2f74d (diff)
reported mem leak in tetgen remesher but was just an malloc/free API call mistake, not a memleak. fixed.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/mesh_remesh_voxel.c37
-rw-r--r--source/blender/editors/object/object_remesh.c2
2 files changed, 20 insertions, 19 deletions
diff --git a/source/blender/blenkernel/intern/mesh_remesh_voxel.c b/source/blender/blenkernel/intern/mesh_remesh_voxel.c
index 018c13b65a7..00bcf9eb8a9 100644
--- a/source/blender/blenkernel/intern/mesh_remesh_voxel.c
+++ b/source/blender/blenkernel/intern/mesh_remesh_voxel.c
@@ -309,21 +309,13 @@ static Mesh *BKE_mesh_remesh_tetgen(Mesh *input_mesh,
bool success = tetgen_resmesh(&tg);
MEM_freeN(verts);
+ verts = NULL;
+ tg.in_verts = NULL;
MEM_freeN(faces);
+ faces = NULL;
+ tg.in_faces = NULL;
MEM_freeN(verttri);
-
-{
- if (tg.out_verts)
- MEM_freeN(tg.out_verts);
-
- if (tg.out_facets)
- MEM_freeN(tg.out_facets);
-
- if (tg.out_tets)
- MEM_freeN(tg.out_tets);
-
- return NULL;
-}
+ verttri = NULL;
Mesh *mesh = NULL;
if (success)
@@ -349,20 +341,29 @@ static Mesh *BKE_mesh_remesh_tetgen(Mesh *input_mesh,
BKE_mesh_calc_normals(mesh);
*numtets = tg.out_tottets;
- //*tets = (unsigned int *)MEM_malloc_arrayN(tg.out_tottets*4, sizeof(unsigned int), "remesh_output_tets");
- *tets = (unsigned int *)malloc(tg.out_tottets*4*sizeof(unsigned int));
+ *tets = (unsigned int *)MEM_malloc_arrayN(tg.out_tottets*4, sizeof(unsigned int), "remesh_output_tets");
+ //*tets = (unsigned int *)malloc(tg.out_tottets*4*sizeof(unsigned int));
memcpy(*tets,tg.out_tets,tg.out_tottets*4*sizeof(unsigned int));
} // end success
- if (tg.out_verts)
+ if (tg.out_verts != NULL)
+ {
MEM_freeN(tg.out_verts);
+ tg.out_verts = NULL;
+ }
- if (tg.out_facets)
+ if (tg.out_facets != NULL)
+ {
MEM_freeN(tg.out_facets);
+ tg.out_facets = NULL;
+ }
- if (tg.out_tets)
+ if (tg.out_tets != NULL)
+ {
MEM_freeN(tg.out_tets);
+ tg.out_tets = NULL;
+ }
return mesh;
}
diff --git a/source/blender/editors/object/object_remesh.c b/source/blender/editors/object/object_remesh.c
index 1b0d373633c..d827f9eeac3 100644
--- a/source/blender/editors/object/object_remesh.c
+++ b/source/blender/editors/object/object_remesh.c
@@ -1188,7 +1188,7 @@ static int tetgen_remesh_exec(bContext *C, wmOperator *op)
Mesh *mesh = ob->data;
Mesh *new_mesh = NULL;
- unsigned int *tets;
+ unsigned int *tets = NULL;
int numtets;
new_mesh = BKE_mesh_remesh_tetgen_to_mesh_nomain(mesh,&tets,&numtets);
if (tets) {