[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51105] trunk/blender/source/blender/ python/generic/py_capi_utils.c: fix [#32779] Bmesh module: assigning to bm. select_mode crashes Blender if bmesh is empty

Campbell Barton ideasman42 at gmail.com
Sat Oct 6 05:33:18 CEST 2012


Revision: 51105
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51105
Author:   campbellbarton
Date:     2012-10-06 03:33:11 +0000 (Sat, 06 Oct 2012)
Log Message:
-----------
fix [#32779] Bmesh module: assigning to bm.select_mode crashes Blender if bmesh is empty

was missing set typecheck

Modified Paths:
--------------
    trunk/blender/source/blender/python/generic/py_capi_utils.c

Modified: trunk/blender/source/blender/python/generic/py_capi_utils.c
===================================================================
--- trunk/blender/source/blender/python/generic/py_capi_utils.c	2012-10-06 03:02:14 UTC (rev 51104)
+++ trunk/blender/source/blender/python/generic/py_capi_utils.c	2012-10-06 03:33:11 UTC (rev 51105)
@@ -760,7 +760,6 @@
 	return 0;
 }
 
-/* 'value' _must_ be a set type, error check before calling */
 int PyC_FlagSet_ToBitfield(PyC_FlagSet *items, PyObject *value, int *r_value, const char *error_prefix)
 {
 	/* set of enum items, concatenate all values with OR */
@@ -771,6 +770,15 @@
 	Py_ssize_t hash = 0;
 	PyObject *key;
 
+	PyC_ObSpit("", value);
+
+	if (!PySet_Check(value)) {
+		PyErr_Format(PyExc_TypeError,
+		             "%.200s expected a set, not %.200s",
+		             error_prefix, Py_TYPE(value)->tp_name);
+		return -1;
+	}
+
 	*r_value = 0;
 
 	while (_PySet_NextEntry(value, &pos, &key, &hash)) {
@@ -778,7 +786,7 @@
 
 		if (param == NULL) {
 			PyErr_Format(PyExc_TypeError,
-			             "%.200s expected a string, not %.200s",
+			             "%.200s set must contain strings, not %.200s",
 			             error_prefix, Py_TYPE(key)->tp_name);
 			return -1;
 		}




More information about the Bf-blender-cvs mailing list