[Bf-blender-cvs] [9737717] master: Fix for some unlikely memory leaks, remove redundant checks

Campbell Barton noreply at git.blender.org
Sat Mar 1 10:15:40 CET 2014


Commit: 973771723414e49709c100b1c3a48c7bdeb51cdd
Author: Campbell Barton
Date:   Sat Mar 1 20:14:20 2014 +1100
https://developer.blender.org/rB973771723414e49709c100b1c3a48c7bdeb51cdd

Fix for some unlikely memory leaks, remove redundant checks

===================================================================

M	source/blender/blenkernel/intern/navmesh_conversion.c
M	source/blender/blenlib/intern/scanfill_utils.c
M	source/blender/editors/space_text/text_draw.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/editors/transform/transform_conversions.c
M	source/blender/editors/uvedit/uvedit_parametrizer.c
M	source/blender/editors/uvedit/uvedit_parametrizer.h
M	source/blender/imbuf/intern/targa.c

===================================================================

diff --git a/source/blender/blenkernel/intern/navmesh_conversion.c b/source/blender/blenkernel/intern/navmesh_conversion.c
index 3c49990..28ef118 100644
--- a/source/blender/blenkernel/intern/navmesh_conversion.c
+++ b/source/blender/blenkernel/intern/navmesh_conversion.c
@@ -400,7 +400,7 @@ int buildNavMeshData(const int nverts, const float *verts,
 		if (curpolyidx != prevpolyidx) {
 			if (curpolyidx != prevpolyidx + 1) {
 				printf("Converting navmesh: Error! Wrong order of detailed mesh faces\n");
-				return 0;
+				goto fail;
 			}
 			dmesh = dmesh == NULL ? dmeshes : dmesh + 4;
 			dmesh[2] = (unsigned short)i;  /* tbase */
@@ -427,6 +427,12 @@ int buildNavMeshData(const int nverts, const float *verts,
 	*dtrisToTrisMap_r = dtrisToTrisMap;
 
 	return 1;
+
+fail:
+	MEM_freeN(dmeshes);
+	MEM_freeN(dtrisToPolysMap);
+	MEM_freeN(dtrisToTrisMap);
+	return 0;
 }
 
 
diff --git a/source/blender/blenlib/intern/scanfill_utils.c b/source/blender/blenlib/intern/scanfill_utils.c
index c3c6871..4bee163 100644
--- a/source/blender/blenlib/intern/scanfill_utils.c
+++ b/source/blender/blenlib/intern/scanfill_utils.c
@@ -46,11 +46,6 @@ typedef struct PolyInfo {
 	ScanFillVert *vert_outer;
 } PolyInfo;
 
-typedef struct PolySort {
-	float area;
-	unsigned short poly_nr;
-} PolySort;
-
 typedef struct ScanFillIsect {
 	struct ScanFillIsect *next, *prev;
 	float co[3];
diff --git a/source/blender/editors/space_text/text_draw.c b/source/blender/editors/space_text/text_draw.c
index 4504963..f25e09a 100644
--- a/source/blender/editors/space_text/text_draw.c
+++ b/source/blender/editors/space_text/text_draw.c
@@ -822,7 +822,7 @@ static void calc_text_rcts(SpaceText *st, ARegion *ar, rcti *scroll, rcti *back)
 		/* the scrollbar is non-linear sized */
 		if (pix_bardiff > 0) {
 			/* the start of the highlight is in the current viewport */
-			if (ltexth && st->viewlines && lhlstart >= st->top && lhlstart <= st->top + st->viewlines) {
+			if (st->viewlines && lhlstart >= st->top && lhlstart <= st->top + st->viewlines) {
 				/* speed the progresion of the start of the highlight through the scrollbar */
 				hlstart = ( ( (pix_available - pix_bardiff) * lhlstart) / ltexth) + (pix_bardiff * (lhlstart - st->top) / st->viewlines);
 			}
@@ -840,7 +840,7 @@ static void calc_text_rcts(SpaceText *st, ARegion *ar, rcti *scroll, rcti *back)
 			}
 
 			/* the end of the highlight is in the current viewport */
-			if (ltexth && st->viewlines && lhlend >= st->top && lhlend <= st->top + st->viewlines) {
+			if (st->viewlines && lhlend >= st->top && lhlend <= st->top + st->viewlines) {
 				/* speed the progresion of the end of the highlight through the scrollbar */
 				hlend = (((pix_available - pix_bardiff) * lhlend) / ltexth) + (pix_bardiff * (lhlend - st->top) / st->viewlines);
 			}
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index cb137ff..4220bcf 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -1217,7 +1217,7 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d)
 			vmargin = 0.035f * (y2 - y1);
 			uiDrawBox(GL_LINE_LOOP, x1 + hmargin, y1 + vmargin, x2 - hmargin, y2 - vmargin, 2.0f);
 		}
-		if (ca && (ca->flag & CAM_SHOWSENSOR)) {
+		if (ca->flag & CAM_SHOWSENSOR) {
 			/* determine sensor fit, and get sensor x/y, for auto fit we
 			 * assume and square sensor and only use sensor_x */
 			float sizex = scene->r.xsch * scene->r.xasp;
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index dabe4c6..beb49a5 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -2636,7 +2636,12 @@ static void createTransUVs(bContext *C, TransInfo *t)
 	}
 
 	/* note: in prop mode we need at least 1 selected */
-	if (countsel == 0) return;
+	if (countsel == 0) {
+		if (propconnected) {
+			MEM_freeN(island_enabled);
+		}
+		return;
+	}
 
 	t->total = (propmode) ? count : countsel;
 	t->data = MEM_callocN(t->total * sizeof(TransData), "TransObData(UV Editing)");
diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.c b/source/blender/editors/uvedit/uvedit_parametrizer.c
index 105f3a8..7150d74 100644
--- a/source/blender/editors/uvedit/uvedit_parametrizer.c
+++ b/source/blender/editors/uvedit/uvedit_parametrizer.c
@@ -200,7 +200,7 @@ typedef struct PChart {
 		} lscm;
 		struct PChartPack {
 			float rescale, area;
-			float size[2], trans[2];
+			float size[2] /* , trans[2] */;
 		} pack;
 	} u;
 
@@ -1100,7 +1100,7 @@ static PFace *p_face_add(PHandle *handle)
 }
 
 static PFace *p_face_add_construct(PHandle *handle, ParamKey key, ParamKey *vkeys,
-                                   float *co[3], float *uv[3], int i1, int i2, int i3,
+                                   float *co[4], float *uv[4], int i1, int i2, int i3,
                                    ParamBool *pin, ParamBool *select)
 {
 	PFace *f = p_face_add(handle);
@@ -4250,7 +4250,7 @@ static void p_add_ngon(ParamHandle *handle, ParamKey key, int nverts,
 }
 
 void param_face_add(ParamHandle *handle, ParamKey key, int nverts,
-                    ParamKey *vkeys, float **co, float **uv,
+                    ParamKey *vkeys, float *co[4], float *uv[4],
                     ParamBool *pin, ParamBool *select, float normal[3])
 {
 	PHandle *phandle = (PHandle *)handle;
diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.h b/source/blender/editors/uvedit/uvedit_parametrizer.h
index 2655775..eaea781 100644
--- a/source/blender/editors/uvedit/uvedit_parametrizer.h
+++ b/source/blender/editors/uvedit/uvedit_parametrizer.h
@@ -59,8 +59,8 @@ void param_face_add(ParamHandle *handle,
                     ParamKey key,
                     int nverts,
                     ParamKey *vkeys,
-                    float **co,
-                    float **uv,
+                    float *co[4],
+                    float *uv[4],
                     ParamBool *pin,
                     ParamBool *select,
                     float face_normal[3]);
diff --git a/source/blender/imbuf/intern/targa.c b/source/blender/imbuf/intern/targa.c
index 7e6116b..6dbd7a4 100644
--- a/source/blender/imbuf/intern/targa.c
+++ b/source/blender/imbuf/intern/targa.c
@@ -618,6 +618,9 @@ ImBuf *imb_loadtarga(unsigned char *mem, size_t mem_size, int flags, char colors
 	}
 	
 	if (flags & IB_test) {
+		if (cmap) {
+			MEM_freeN(cmap);
+		}
 		return ibuf;
 	}




More information about the Bf-blender-cvs mailing list