[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44823] trunk/blender/source/blender: code cleanup/bugfix uninitialized values

Campbell Barton ideasman42 at gmail.com
Mon Mar 12 07:53:55 CET 2012


Revision: 44823
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44823
Author:   campbellbarton
Date:     2012-03-12 06:53:47 +0000 (Mon, 12 Mar 2012)
Log Message:
-----------
code cleanup/bugfix uninitialized values
- edgebisect bmesh operator used uninialized beauty field.
- BLI_join_dirfile could read from before the string bounds when passed an empty dir string.
- pransform could use an uninitialized projected coordinate (unlikely but possible)
- RNA_property_path_from_ID_check would compare against an uninitialized pointer when the path wasn't found.

also have bmesh walker use BM_edge_other_vert() utility function.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/path_util.c
    trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
    trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c
    trunk/blender/source/blender/editors/transform/transform.c
    trunk/blender/source/blender/editors/transform/transform.h
    trunk/blender/source/blender/makesrna/intern/rna_access.c

Modified: trunk/blender/source/blender/blenlib/intern/path_util.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/path_util.c	2012-03-12 06:07:16 UTC (rev 44822)
+++ trunk/blender/source/blender/blenlib/intern/path_util.c	2012-03-12 06:53:47 UTC (rev 44823)
@@ -1523,9 +1523,9 @@
 	}
 
 	/* inline BLI_add_slash */
-	if (dst[dirlen - 1] != SEP) {
-		dst[dirlen++]= SEP;
-		dst[dirlen  ]= '\0';
+	if ((dirlen > 0) && (dst[dirlen - 1] != SEP)) {
+		dst[dirlen++] = SEP;
+		dst[dirlen  ] = '\0';
 	}
 
 	if (dirlen >= maxlen) {

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c	2012-03-12 06:07:16 UTC (rev 44822)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c	2012-03-12 06:53:47 UTC (rev 44823)
@@ -256,8 +256,7 @@
 
 	owalk = *iwalk;
 
-	if (iwalk->lastv == e->v1) v = e->v2;
-	else v = e->v1;
+	v = BM_edge_other_vert(e, iwalk->lastv);
 
 	if (!BM_vert_is_manifold(walker->bm, v)) {
 		BMW_reset(walker);
@@ -411,11 +410,8 @@
 	lwalk = BMW_state_add(walker);
 	*lwalk = owalk;
 
-	if (lwalk->lastv == owalk.cur->v1) lwalk->lastv = owalk.cur->v2;
-	else lwalk->lastv = owalk.cur->v1;
+	lwalk->lastv = lwalk->startv = BM_edge_other_vert(owalk.cur, lwalk->lastv);
 
-	lwalk->startv = lwalk->lastv;
-
 	BLI_ghash_free(walker->visithash, NULL, NULL);
 	walker->visithash = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "bmesh walkers 2");
 	BLI_ghash_insert(walker->visithash, owalk.cur, NULL);
@@ -625,8 +621,9 @@
 
 	l = l->radial_next;
 	
-	if (lwalk->nocalc)
+	if (lwalk->nocalc) {
 		return f;
+	}
 
 	if (!bmw_FaceLoopWalker_include_face(walker, l)) {
 		l = lwalk->l;

Modified: trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c	2012-03-12 06:07:16 UTC (rev 44822)
+++ trunk/blender/source/blender/bmesh/operators/bmo_subdivide.c	2012-03-12 06:53:47 UTC (rev 44823)
@@ -1080,10 +1080,10 @@
 {
 	BMOIter siter;
 	BMEdge *e;
-	SubDParams params;
+	SubDParams params = {0};
 	int skey;
 	
-	params.numcuts = BMO_slot_get(op, "numcuts")->data.i;
+	params.numcuts = BMO_slot_int_get(op, "numcuts");
 	params.op = op;
 	
 	BM_data_layer_add(bm, &bm->vdata, CD_SHAPEKEY);

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c	2012-03-12 06:07:16 UTC (rev 44822)
+++ trunk/blender/source/blender/editors/transform/transform.c	2012-03-12 06:53:47 UTC (rev 44823)
@@ -136,28 +136,28 @@
 	vec[2]= 0.0f;
 }
 
-void convertViewVec(TransInfo *t, float vec[3], int dx, int dy)
+void convertViewVec(TransInfo *t, float r_vec[3], int dx, int dy)
 {
 	if ((t->spacetype == SPACE_VIEW3D) && (t->ar->regiontype == RGN_TYPE_WINDOW)) {
 		float mval_f[2];
 		mval_f[0] = dx;
 		mval_f[1] = dy;
-		ED_view3d_win_to_delta(t->ar, mval_f, vec);
+		ED_view3d_win_to_delta(t->ar, mval_f, r_vec);
 	}
 	else if(t->spacetype==SPACE_IMAGE) {
 		float aspx, aspy;
 
-		convertViewVec2D(t->view, vec, dx, dy);
+		convertViewVec2D(t->view, r_vec, dx, dy);
 
 		ED_space_image_uv_aspect(t->sa->spacedata.first, &aspx, &aspy);
-		vec[0]*= aspx;
-		vec[1]*= aspy;
+		r_vec[0] *= aspx;
+		r_vec[1] *= aspy;
 	}
 	else if(ELEM(t->spacetype, SPACE_IPO, SPACE_NLA)) {
-		convertViewVec2D(t->view, vec, dx, dy);
+		convertViewVec2D(t->view, r_vec, dx, dy);
 	}
 	else if(ELEM(t->spacetype, SPACE_NODE, SPACE_SEQ)) {
-		convertViewVec2D(&t->ar->v2d, vec, dx, dy);
+		convertViewVec2D(&t->ar->v2d, r_vec, dx, dy);
 	}
 	else if(t->spacetype==SPACE_CLIP) {
 		View2D *v2d = t->view;
@@ -166,17 +166,17 @@
 		divx= v2d->mask.xmax-v2d->mask.xmin;
 		divy= v2d->mask.ymax-v2d->mask.ymin;
 
-		vec[0]= (v2d->cur.xmax-v2d->cur.xmin)*(dx)/divx;
-		vec[1]= (v2d->cur.ymax-v2d->cur.ymin)*(dy)/divy;
-		vec[2]= 0.0f;
+		r_vec[0] = (v2d->cur.xmax-v2d->cur.xmin)*(dx)/divx;
+		r_vec[1] = (v2d->cur.ymax-v2d->cur.ymin)*(dy)/divy;
+		r_vec[2] = 0.0f;
 	}
 	else {
 		printf("%s: called in an invalid context\n", __func__);
-		zero_v3(vec);
+		zero_v3(r_vec);
 	}
 }
 
-void projectIntView(TransInfo *t, float *vec, int *adr)
+void projectIntView(TransInfo *t, const float vec[3], int adr[2])
 {
 	if (t->spacetype==SPACE_VIEW3D) {
 		if(t->ar->regiontype == RGN_TYPE_WINDOW)
@@ -229,26 +229,31 @@
 	}
 }
 
-void projectFloatView(TransInfo *t, float *vec, float *adr)
+void projectFloatView(TransInfo *t, const float vec[3], float adr[2])
 {
-	if (t->spacetype==SPACE_VIEW3D) {
-		if(t->ar->regiontype == RGN_TYPE_WINDOW)
-			project_float_noclip(t->ar, vec, adr);
+	switch (t->spacetype) {
+		case SPACE_VIEW3D:
+		{
+			if (t->ar->regiontype == RGN_TYPE_WINDOW) {
+				project_float_noclip(t->ar, vec, adr);
+				return;
+			}
+			break;
+		}
+		case SPACE_IMAGE:
+		case SPACE_CLIP:
+		case SPACE_IPO:
+		case SPACE_NLA:
+		{
+			int a[2];
+			projectIntView(t, vec, a);
+			adr[0] = a[0];
+			adr[1] = a[1];
+			return;
+		}
 	}
-	else if(ELEM(t->spacetype, SPACE_IMAGE, SPACE_CLIP)) {
-		int a[2];
 
-		projectIntView(t, vec, a);
-		adr[0]= a[0];
-		adr[1]= a[1];
-	}
-	else if(ELEM(t->spacetype, SPACE_IPO, SPACE_NLA)) {
-		int a[2];
-
-		projectIntView(t, vec, a);
-		adr[0]= a[0];
-		adr[1]= a[1];
-	}
+	zero_v2(adr);
 }
 
 void applyAspectRatio(TransInfo *t, float *vec)

Modified: trunk/blender/source/blender/editors/transform/transform.h
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.h	2012-03-12 06:07:16 UTC (rev 44822)
+++ trunk/blender/source/blender/editors/transform/transform.h	2012-03-12 06:53:47 UTC (rev 44823)
@@ -444,9 +444,9 @@
 int  transformEnd(struct bContext *C, TransInfo *t);
 
 void setTransformViewMatrices(TransInfo *t);
-void convertViewVec(TransInfo *t, float *vec, int dx, int dy);
-void projectIntView(TransInfo *t, float *vec, int *adr);
-void projectFloatView(TransInfo *t, float *vec, float *adr);
+void convertViewVec(TransInfo *t, float r_vec[3], int dx, int dy);
+void projectIntView(TransInfo *t, const float vec[3], int adr[2]);
+void projectFloatView(TransInfo *t, const float vec[3], float adr[2]);
 
 void applyAspectRatio(TransInfo *t, float *vec);
 void removeAspectRatio(TransInfo *t, float *vec);

Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c	2012-03-12 06:07:16 UTC (rev 44822)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c	2012-03-12 06:53:47 UTC (rev 44823)
@@ -1430,8 +1430,12 @@
 		PropertyRNA *r_prop;
 
 		RNA_id_pointer_create(ptr->id.data, &id_ptr);
-		RNA_path_resolve(&id_ptr, path, &r_ptr, &r_prop);
-		ret = (prop == r_prop);
+		if (RNA_path_resolve(&id_ptr, path, &r_ptr, &r_prop) == TRUE) {
+			ret = (prop == r_prop);
+		}
+		else {
+			ret = FALSE;
+		}
 		MEM_freeN(path);
 	}
 




More information about the Bf-blender-cvs mailing list