[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