[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53192] trunk/blender/source/blender/ python/intern/bpy_rna.c: py api: be more strict with boolean assignment, only accept 0 or 1, True/False.

Campbell Barton ideasman42 at gmail.com
Thu Dec 20 04:08:31 CET 2012


Revision: 53192
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53192
Author:   campbellbarton
Date:     2012-12-20 03:08:27 +0000 (Thu, 20 Dec 2012)
Log Message:
-----------
py api: be more strict with boolean assignment, only accept 0 or 1, True/False. Would allow any nonzero value.

Modified Paths:
--------------
    trunk/blender/source/blender/python/intern/bpy_rna.c

Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c	2012-12-20 02:57:04 UTC (rev 53191)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c	2012-12-20 03:08:27 UTC (rev 53192)
@@ -1510,12 +1510,18 @@
 				/* prefer not to have an exception here
 				 * however so many poll functions return None or a valid Object.
 				 * its a hassle to convert these into a bool before returning, */
-				if (RNA_property_flag(prop) & PROP_OUTPUT)
+				if (RNA_property_flag(prop) & PROP_OUTPUT) {
 					param = PyObject_IsTrue(value);
-				else
+				}
+				else {
 					param = PyLong_AsLong(value);
 
-				if (param < 0) {
+					if (UNLIKELY(param & ~1)) {  /* only accept 0/1 */
+						param = -1;              /* error out below */
+					}
+				}
+
+				if (param == -1) {
 					PyErr_Format(PyExc_TypeError,
 					             "%.200s %.200s.%.200s expected True/False or 0/1, not %.200s",
 					             error_prefix, RNA_struct_identifier(ptr->type),




More information about the Bf-blender-cvs mailing list