[Bf-blender-cvs] [36630b7] master: Fix memory leaks mesh w/ mesh remapping
Campbell Barton
noreply at git.blender.org
Thu Jul 23 21:09:55 CEST 2015
Commit: 36630b7e854ba69520aab9be411361589eb3ce83
Author: Campbell Barton
Date: Fri Jul 24 05:04:33 2015 +1000
Branches: master
https://developer.blender.org/rB36630b7e854ba69520aab9be411361589eb3ce83
Fix memory leaks mesh w/ mesh remapping
===================================================================
M source/blender/blenkernel/intern/mesh_mapping.c
M source/blender/blenkernel/intern/mesh_remap.c
===================================================================
diff --git a/source/blender/blenkernel/intern/mesh_mapping.c b/source/blender/blenkernel/intern/mesh_mapping.c
index c03f1fe..ef91363 100644
--- a/source/blender/blenkernel/intern/mesh_mapping.c
+++ b/source/blender/blenkernel/intern/mesh_mapping.c
@@ -797,8 +797,8 @@ bool BKE_mesh_calc_islands_loop_poly_uv(
/* Those are used to detect 'inner cuts', i.e. edges that are borders, and yet have two or more polys of
* a same group using them (typical case: seam used to unwrap properly a cylinder). */
- BLI_bitmap *edge_borders;
- int num_edge_borders;
+ BLI_bitmap *edge_borders = NULL;
+ int num_edge_borders = 0;
char *edge_border_count = NULL;
int *edge_innercut_indices = NULL;
int num_einnercuts = 0;
@@ -817,6 +817,12 @@ bool BKE_mesh_calc_islands_loop_poly_uv(
if (!num_poly_groups) {
/* Should never happen... */
+ MEM_freeN(edge_poly_map);
+ MEM_freeN(edge_poly_mem);
+
+ if (edge_borders) {
+ MEM_freeN(edge_borders);
+ }
return false;
}
@@ -861,9 +867,17 @@ bool BKE_mesh_calc_islands_loop_poly_uv(
num_einnercuts, edge_innercut_indices);
}
+ MEM_freeN(edge_poly_map);
+ MEM_freeN(edge_poly_mem);
+
MEM_freeN(poly_indices);
MEM_freeN(loop_indices);
MEM_freeN(poly_groups);
+
+ if (edge_borders) {
+ MEM_freeN(edge_borders);
+ }
+
if (num_edge_borders) {
MEM_freeN(edge_border_count);
MEM_freeN(edge_innercut_indices);
diff --git a/source/blender/blenkernel/intern/mesh_remap.c b/source/blender/blenkernel/intern/mesh_remap.c
index ec8b362..978ea37 100644
--- a/source/blender/blenkernel/intern/mesh_remap.c
+++ b/source/blender/blenkernel/intern/mesh_remap.c
@@ -1933,15 +1933,27 @@ void BKE_mesh_remap_calc_loops_from_dm(
if (looptri_allocated_src) {
MEM_freeN((void *)looptri_src);
}
+ if (vert_to_loop_map_src) {
+ MEM_freeN(vert_to_loop_map_src);
+ }
if (vert_to_loop_map_src_buff) {
MEM_freeN(vert_to_loop_map_src_buff);
}
+ if (vert_to_poly_map_src) {
+ MEM_freeN(vert_to_poly_map_src);
+ }
if (vert_to_poly_map_src_buff) {
MEM_freeN(vert_to_poly_map_src_buff);
}
+ if (edge_to_poly_map_src) {
+ MEM_freeN(edge_to_poly_map_src);
+ }
if (edge_to_poly_map_src_buff) {
MEM_freeN(edge_to_poly_map_src_buff);
}
+ if (poly_to_looptri_map_src) {
+ MEM_freeN(poly_to_looptri_map_src);
+ }
if (poly_to_looptri_map_src_buff) {
MEM_freeN(poly_to_looptri_map_src_buff);
}
More information about the Bf-blender-cvs
mailing list