[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11241] trunk/blender/source/blender/ python/api2_2x: From stable

Campbell Barton cbarton at metavr.com
Thu Jul 12 13:51:21 CEST 2007


Revision: 11241
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11241
Author:   campbellbarton
Date:     2007-07-12 13:51:21 +0200 (Thu, 12 Jul 2007)

Log Message:
-----------
>From stable

Revision: 11237
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11237
Author:   campbellbarton
Date:     2007-07-12 13:05:31 +0200 (Thu, 12 Jul 2007)

Log Message:
-----------
PyObject_IsTrue was missing a check for an error return value in many cases.

Modified Paths:
--------------
    trunk/blender/source/blender/python/api2_2x/BezTriple.c
    trunk/blender/source/blender/python/api2_2x/Camera.c
    trunk/blender/source/blender/python/api2_2x/Image.c
    trunk/blender/source/blender/python/api2_2x/Ipocurve.c
    trunk/blender/source/blender/python/api2_2x/Key.c
    trunk/blender/source/blender/python/api2_2x/Mesh.c
    trunk/blender/source/blender/python/api2_2x/Object.c
    trunk/blender/source/blender/python/api2_2x/Pose.c
    trunk/blender/source/blender/python/api2_2x/SurfNurb.c
    trunk/blender/source/blender/python/api2_2x/Texture.c
    trunk/blender/source/blender/python/api2_2x/bpy_data.c
    trunk/blender/source/blender/python/api2_2x/gen_library.c
    trunk/blender/source/blender/python/api2_2x/gen_utils.c
    trunk/blender/source/blender/python/api2_2x/sceneSequence.c

Modified: trunk/blender/source/blender/python/api2_2x/BezTriple.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/BezTriple.c	2007-07-12 11:19:15 UTC (rev 11240)
+++ trunk/blender/source/blender/python/api2_2x/BezTriple.c	2007-07-12 11:51:21 UTC (rev 11241)
@@ -350,7 +350,12 @@
 
 static int BezTriple_setHide( BPy_BezTriple * self, PyObject *value )
 {
-	if( PyObject_IsTrue( value ) )
+	int param = PyObject_IsTrue( value );
+	if( param == -1 )
+		return EXPP_ReturnIntError( PyExc_TypeError,
+				"expected True/False or 0/1" );
+	
+	if( param )
 		self->beztriple->hide = IPO_BEZ;
 	else
 		self->beztriple->hide = 0;
@@ -368,6 +373,7 @@
 {
 	struct BezTriple *bezt = self->beztriple;
 	PyObject *ob1, *ob2, *ob3;
+	int param1, param2, param3;
 
        /* only accept a sequence of three booleans */
 
@@ -379,15 +385,22 @@
 	ob2 = PySequence_ITEM( args, 1 );
 	ob3 = PySequence_ITEM( args, 2 );
 
+	param1 = PyObject_IsTrue( ob1 );
+	param2 = PyObject_IsTrue( ob2 );
+	param3 = PyObject_IsTrue( ob3 );
+	
+	if (param1==-1 || param2==-1 || param3==-1)
+		return EXPP_ReturnIntError( PyExc_TypeError,
+				"expected a sequence of 3 items: True/False or 0/1" );
+	
        /* assign the selects */
-	bezt->f1 = ( char )PyObject_IsTrue( ob1 );
-	bezt->f2 = ( char )PyObject_IsTrue( ob2 );
-	bezt->f3 = ( char )PyObject_IsTrue( ob3 );
+	bezt->f1 = (char)param1;
+	bezt->f2 = (char)param2;
+	bezt->f3 = (char)param3;
 
 	Py_DECREF( ob1 );
 	Py_DECREF( ob2 );
 	Py_DECREF( ob3 );
-
 	return 0;
 }
 

Modified: trunk/blender/source/blender/python/api2_2x/Camera.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Camera.c	2007-07-12 11:19:15 UTC (rev 11240)
+++ trunk/blender/source/blender/python/api2_2x/Camera.c	2007-07-12 11:51:21 UTC (rev 11241)
@@ -824,7 +824,12 @@
 
 static int setFlagAttr( BPy_Camera *self, PyObject *value, void *type )
 {
-	if (PyObject_IsTrue(value))
+	int param = PyObject_IsTrue( value );
+	if( param == -1 )
+		return EXPP_ReturnIntError( PyExc_TypeError,
+				"expected True/False or 0/1" );
+	
+	if (param)
 		self->camera->flag |= (int)type;
 	else
 		self->camera->flag &= ~(int)type;

Modified: trunk/blender/source/blender/python/api2_2x/Image.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Image.c	2007-07-12 11:19:15 UTC (rev 11240)
+++ trunk/blender/source/blender/python/api2_2x/Image.c	2007-07-12 11:51:21 UTC (rev 11241)
@@ -1095,7 +1095,12 @@
 
 static int Image_setFlag(BPy_Image *self, PyObject *value, void *flag)
 {
-	if ( PyObject_IsTrue(value) )
+	int param = PyObject_IsTrue( value );
+	if( param == -1 )
+		return EXPP_ReturnIntError( PyExc_TypeError,
+				"expected True/False or 0/1" );
+	
+	if ( param )
 		self->image->flag |= (int)flag;
 	else
 		self->image->flag &= ~(int)flag;
@@ -1104,7 +1109,12 @@
 
 static int Image_setFlagTpage(BPy_Image *self, PyObject *value, void *flag)
 {
-	if ( PyObject_IsTrue(value) )
+	int param = PyObject_IsTrue( value );
+	if( param == -1 )
+		return EXPP_ReturnIntError( PyExc_TypeError,
+				"expected True/False or 0/1" );
+	
+	if ( param )
 		self->image->tpageflag |= (int)flag;
 	else
 		self->image->tpageflag &= ~(int)flag;

Modified: trunk/blender/source/blender/python/api2_2x/Ipocurve.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Ipocurve.c	2007-07-12 11:19:15 UTC (rev 11240)
+++ trunk/blender/source/blender/python/api2_2x/Ipocurve.c	2007-07-12 11:51:21 UTC (rev 11241)
@@ -1029,6 +1029,9 @@
 static int IpoCurve_setFlag( C_IpoCurve * self, PyObject *value, void *type )
 {
 	int param = PyObject_IsTrue( value );
+	if( param == -1 )
+		return EXPP_ReturnIntError( PyExc_TypeError,
+				"expected True/False or 0/1" );
 	
 	if (param)
 		self->ipocurve->flag |= (int)type;

Modified: trunk/blender/source/blender/python/api2_2x/Key.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Key.c	2007-07-12 11:19:15 UTC (rev 11240)
+++ trunk/blender/source/blender/python/api2_2x/Key.c	2007-07-12 11:51:21 UTC (rev 11241)
@@ -334,7 +334,12 @@
 
 static int Key_setRelative( BPy_Key * self, PyObject * value )
 {
-	if( PyObject_IsTrue( value ) )
+	int param = PyObject_IsTrue( value );
+	if( param == -1 )
+		return EXPP_ReturnIntError( PyExc_TypeError,
+				"expected True/False or 0/1" );
+	
+	if( param )
 		self->key->type = KEY_RELATIVE;
 	else
 		self->key->type = KEY_NORMAL;

Modified: trunk/blender/source/blender/python/api2_2x/Mesh.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Mesh.c	2007-07-12 11:19:15 UTC (rev 11240)
+++ trunk/blender/source/blender/python/api2_2x/Mesh.c	2007-07-12 11:51:21 UTC (rev 11241)
@@ -2576,7 +2576,7 @@
 	
 	if( param == -1 )
 		return EXPP_ReturnIntError( PyExc_TypeError,
-				"expected true/false argument" );
+				"expected True/False or 0/1" );
 
 	me = self->mesh;
 
@@ -3994,7 +3994,7 @@
 
 	if( param == -1 )
 		return EXPP_ReturnIntError( PyExc_TypeError,
-				"expected true/false argument" );
+				"expected True/False or 0/1" );
 
 	me = self->mesh;
 	if( param ) {
@@ -5011,12 +5011,25 @@
 	/* process any keyword arguments */
 	if( keywds ) {
 		PyObject *res = PyDict_GetItemString( keywds, "ignoreDups" );
-		if( res )
+		if( res ) {
 			ignore_dups = PyObject_IsTrue( res );
-
+			if (ignore_dups==-1) {
+				return EXPP_ReturnPyObjError( PyExc_TypeError,
+						"keyword argument \"ignoreDups\" expected True/False or 0/1" );
+			}
+		}
 		res = PyDict_GetItemString( keywds, "indexList" );
-		if( res && PyObject_IsTrue( res ) )
-			return_list = PyList_New( 0 );
+		if (res) {
+			switch( PyObject_IsTrue( res ) ) {
+			case  0:
+				break;
+			case -1:
+				return EXPP_ReturnPyObjError( PyExc_TypeError,
+						"keyword argument \"indexList\" expected True/False or 0/1" );
+			default:
+				return_list = PyList_New( 0 );
+			}
+		}
 	}
 
 	/* make sure we get a tuple of sequences of something */
@@ -7677,7 +7690,7 @@
 
 	if( param == -1 )
 		return EXPP_ReturnIntError( PyExc_TypeError,
-				"expected int argument in range [0,1]" );
+				"expected True/False or 0/1" );
 
 	/* sticky is independent of faceUV and vertUV */
 
@@ -7904,15 +7917,19 @@
 	return ret;
 }
 
-static int Mesh_setSel( BPy_Mesh * self, PyObject * arg )
+static int Mesh_setSel( BPy_Mesh * self, PyObject * value )
 {
-	int i;
+	int i, param = PyObject_IsTrue( value );
 	Mesh *me = self->mesh;
 	MVert *mvert = me->mvert;
 	MEdge *medge = me->medge;
 	MFace *mface = me->mface;
 
-	if( PyObject_IsTrue( arg ) ) {
+	if( param == -1 )
+		return EXPP_ReturnIntError( PyExc_TypeError,
+				"expected True/False or 0/1" );
+	
+	if( param ) {
 		for( i = 0; i < me->totvert; ++mvert, ++i )
 			mvert->flag |= SELECT;
 		for( i = 0; i < me->totedge; ++medge, ++i )
@@ -7931,15 +7948,19 @@
 	return 0;
 }
 
-static int Mesh_setHide( BPy_Mesh * self, PyObject * arg )
+static int Mesh_setHide( BPy_Mesh * self, PyObject * value )
 {
-	int i;
+	int i, param = PyObject_IsTrue( value );
 	Mesh *me = self->mesh;
 	MVert *mvert = me->mvert;
 	MEdge *medge = me->medge;
 	MFace *mface = me->mface;
 
-	if( PyObject_IsTrue( arg ) ) {
+	if( param == -1 )
+		return EXPP_ReturnIntError( PyExc_TypeError,
+				"expected True/False or 0/1" );
+	
+	if( param ) {
 		for( i = 0; i < me->totvert; ++mvert, ++i )
 			mvert->flag |= ME_HIDE;
 		for( i = 0; i < me->totedge; ++medge, ++i )

Modified: trunk/blender/source/blender/python/api2_2x/Object.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Object.c	2007-07-12 11:19:15 UTC (rev 11240)
+++ trunk/blender/source/blender/python/api2_2x/Object.c	2007-07-12 11:51:21 UTC (rev 11241)
@@ -1209,16 +1209,16 @@
 static int Object_setSelect( BPy_Object * self, PyObject * value )
 {
 	Base *base;
-	int setting = PyObject_IsTrue( value );
+	int param = PyObject_IsTrue( value );
 
-	if( setting == -1 )
+	if( param == -1 )
 		return EXPP_ReturnIntError( PyExc_TypeError,
-				"expected true/false argument" );
+				"expected True/False or 0/1" );
 
 	base = FIRSTBASE;
 	while( base ) {
 		if( base->object == self->object ) {
-			if( setting == 1 ) {
+			if( param ) {
 				base->flag |= SELECT;
 				self->object->flag = (short)base->flag;
 				set_active_base( base );
@@ -2939,20 +2939,20 @@
 		Py_RETURN_FALSE;
 }
 
-static int Object_setNLAflagBits ( BPy_Object * self, PyObject * args ) 
+static int Object_setNLAflagBits ( BPy_Object * self, PyObject * value ) 
 {
-	int value;
+	int param;
 
-	value = PyObject_IsTrue( args );
-	if( value == -1 )
+	param = PyObject_IsTrue( value );
+	if( param == -1 )
 		return EXPP_ReturnIntError( PyExc_TypeError,
-				"expected 1/0 for true/false" );
+				"expected True/False or 0/1" );
 
-	if (value==1)
+	if (param)
 		self->object->nlaflag |= OB_NLA_OVERRIDE;
 	else 
 		self->object->nlaflag &= ~OB_NLA_OVERRIDE;
-		
+	
 	self->object->recalc |= OB_RECALC_OB;  
 
 	return 0;
@@ -2961,7 +2961,6 @@
 static PyObject *Object_getDupliObjects( BPy_Object * self )
 {
 	Object *ob= self->object;
-	PyObject *pair;
 	
 	if(ob->transflag & OB_DUPLI) {
 		/* before make duplis, update particle for current frame */
@@ -2983,6 +2982,7 @@
 						"PyList_New() failed" );
 
 			for(dupob= duplilist->first, index=0; dupob; dupob= dupob->next, index++) {
+				PyObject *pair;
 				pair = PyTuple_New( 2 );
 				
 				PyTuple_SET_ITEM( pair, 0, Object_CreatePyObject(dupob->ob) );
@@ -3184,20 +3184,20 @@
 	return PyBool_FromLong( ( long ) self->object->pd->deflect );
 }
 
-static int Object_setPIDeflection( BPy_Object * self, PyObject * args )
+static int Object_setPIDeflection( BPy_Object * self, PyObject * value )
 {
-	int value;
+	int param;
 
     if( !self->object->pd && !setupPI(self->object) )
 		return EXPP_ReturnIntError( PyExc_RuntimeError,
 				"particle deflection could not be accessed" );
 
-	value = PyObject_IsTrue( args );
-	if( value == -1 )
+	param = PyObject_IsTrue( value );
+	if( param == -1 )
 		return EXPP_ReturnIntError( PyExc_TypeError,
 				"expected true/false argument" );
 
-	self->object->pd->deflect = (short)value;
+	self->object->pd->deflect = (short)param;
 	self->object->recalc |= OB_RECALC_OB;  
 
 	return 0;
@@ -3249,20 +3249,20 @@
 	return PyBool_FromLong( ( long )self->object->pd->flag );
 }
 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list