[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53780] trunk/blender/source/blender: fix for own error with unwrap selection checking uvedit_have_selection() failed with no UV layer.

Campbell Barton ideasman42 at gmail.com
Mon Jan 14 09:02:15 CET 2013


Revision: 53780
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53780
Author:   campbellbarton
Date:     2013-01-14 08:02:06 +0000 (Mon, 14 Jan 2013)
Log Message:
-----------
fix for own error with unwrap selection checking uvedit_have_selection() failed with no UV layer.
also add some safety checks for BM_ELEM_CD_GET_* macros.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/bmesh.h
    trunk/blender/source/blender/bmesh/bmesh_class.h
    trunk/blender/source/blender/editors/transform/transform.h
    trunk/blender/source/blender/editors/transform/transform_input.c
    trunk/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c

Modified: trunk/blender/source/blender/bmesh/bmesh.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh.h	2013-01-13 18:21:47 UTC (rev 53779)
+++ trunk/blender/source/blender/bmesh/bmesh.h	2013-01-14 08:02:06 UTC (rev 53780)
@@ -243,6 +243,7 @@
 
 #include <stdlib.h>
 #include <stdio.h>
+#include <assert.h>
 
 #include "bmesh_class.h"
 

Modified: trunk/blender/source/blender/bmesh/bmesh_class.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh_class.h	2013-01-13 18:21:47 UTC (rev 53779)
+++ trunk/blender/source/blender/bmesh/bmesh_class.h	2013-01-14 08:02:06 UTC (rev 53780)
@@ -253,18 +253,17 @@
 };
 
 /* defines */
-
 #define BM_ELEM_CD_GET_VOID_P(ele, offset) \
-	((void)0, (void *)((char *)(ele)->head.data + (offset)))
+	(assert(offset != -1), (void *)((char *)(ele)->head.data + (offset)))
 
 #define BM_ELEM_CD_SET_FLOAT(ele, offset, f) \
-	{ *((float *)((char *)(ele)->head.data + (offset))) = (f); } (void)0
+	{ assert(offset != -1); *((float *)((char *)(ele)->head.data + (offset))) = (f); } (void)0
 
 #define BM_ELEM_CD_GET_FLOAT(ele, offset) \
-	((void)0, *((float *)((char *)(ele)->head.data + (offset))))
+	(assert(offset != -1), *((float *)((char *)(ele)->head.data + (offset))))
 
 #define BM_ELEM_CD_GET_FLOAT_AS_UCHAR(ele, offset) \
-	(unsigned char)(BM_ELEM_CD_GET_FLOAT(ele, offset) * 255.0f)
+	(assert(offset != -1), (unsigned char)(BM_ELEM_CD_GET_FLOAT(ele, offset) * 255.0f))
 
 /*forward declarations*/
 

Modified: trunk/blender/source/blender/editors/transform/transform.h
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.h	2013-01-13 18:21:47 UTC (rev 53779)
+++ trunk/blender/source/blender/editors/transform/transform.h	2013-01-14 08:02:06 UTC (rev 53780)
@@ -271,8 +271,8 @@
 } TransData;
 
 typedef struct MouseInput {
-	void	(*apply)(struct TransInfo *, struct MouseInput *, const int [2], float [3]);
-	void	(*post)(struct TransInfo *, float [3]);
+	void	(*apply)(struct TransInfo *t, struct MouseInput *mi, const int mval[2], float output[3]);
+	void	(*post)(struct TransInfo *t, float values[3]);
 
 	int     imval[2];       	/* initial mouse position                */
 	char	precision;
@@ -691,7 +691,7 @@
 void applyMouseInput(struct TransInfo *t, struct MouseInput *mi, const int mval[2], float output[3]);
 
 void setCustomPoints(TransInfo *t, MouseInput *mi, int start[2], int end[2]);
-void setInputPostFct(MouseInput *mi, void	(*post)(struct TransInfo *, float [3]));
+void setInputPostFct(MouseInput *mi, void	(*post)(struct TransInfo *t, float values[3]));
 
 /*********************** Generics ********************************/
 

Modified: trunk/blender/source/blender/editors/transform/transform_input.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_input.c	2013-01-13 18:21:47 UTC (rev 53779)
+++ trunk/blender/source/blender/editors/transform/transform_input.c	2013-01-14 08:02:06 UTC (rev 53780)
@@ -368,7 +368,7 @@
 	applyMouseInput(t, mi, mi->imval, t->values);
 }
 
-void setInputPostFct(MouseInput *mi, void (*post)(struct TransInfo *, float[3]))
+void setInputPostFct(MouseInput *mi, void (*post)(struct TransInfo *t, float values[3]))
 {
 	mi->post = post;
 }

Modified: trunk/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c
===================================================================
--- trunk/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c	2013-01-13 18:21:47 UTC (rev 53779)
+++ trunk/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c	2013-01-14 08:02:06 UTC (rev 53780)
@@ -161,14 +161,14 @@
 
 /****************** Parametrizer Conversion ***************/
 
-static bool uvedit_have_selection(Scene *scene, BMEditMesh *em, short implicit)
+static bool uvedit_have_selection(Scene *scene, BMEditMesh *em, bool implicit)
 {
 	BMFace *efa;
 	BMLoop *l;
 	BMIter iter, liter;
 	
 	if (!CustomData_has_layer(&em->bm->ldata, CD_MLOOPUV)) {
-		return false;
+		return (em->bm->totfacesel != 0);
 	}
 
 	/* verify if we have any selected uv's before unwrapping,
@@ -561,7 +561,7 @@
 	BMEditMesh *em = BMEdit_FromObject(obedit);
 	MinStretch *ms;
 	int fill_holes = RNA_boolean_get(op->ptr, "fill_holes");
-	short implicit = 1;
+	bool implicit = true;
 
 	if (!uvedit_have_selection(scene, em, implicit)) {
 		return false;
@@ -757,7 +757,7 @@
 	Object *obedit = CTX_data_edit_object(C);
 	BMEditMesh *em = BMEdit_FromObject(obedit);
 	ParamHandle *handle;
-	short implicit = 1;
+	bool implicit = true;
 
 	if (!uvedit_have_selection(scene, em, implicit)) {
 		return OPERATOR_CANCELLED;
@@ -804,7 +804,7 @@
 	Object *obedit = CTX_data_edit_object(C);
 	BMEditMesh *em = BMEdit_FromObject(obedit);
 	ParamHandle *handle;
-	short implicit = 1;
+	bool implicit = true;
 
 	if (!uvedit_have_selection(scene, em, implicit)) {
 		return OPERATOR_CANCELLED;
@@ -1209,7 +1209,7 @@
 	int use_subsurf = RNA_boolean_get(op->ptr, "use_subsurf_data");
 	short use_subsurf_final;
 	float obsize[3];
-	short implicit = 0;
+	bool implicit = false;
 
 	if (!uvedit_have_selection(scene, em, implicit)) {
 		return OPERATOR_CANCELLED;




More information about the Bf-blender-cvs mailing list