[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52637] trunk/blender/source/blender/ python/bmesh/bmesh_py_ops_call.c: bmesh operator py api:
Campbell Barton
ideasman42 at gmail.com
Wed Nov 28 16:07:58 CET 2012
Revision: 52637
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52637
Author: campbellbarton
Date: 2012-11-28 15:07:57 +0000 (Wed, 28 Nov 2012)
Log Message:
-----------
bmesh operator py api:
- fix for incorrect bmesh operator type-check for mapping slots.
- fix for python causing an assert when invalid args are given.
- fix memory leak with some exceptions.
Modified Paths:
--------------
trunk/blender/source/blender/python/bmesh/bmesh_py_ops_call.c
Modified: trunk/blender/source/blender/python/bmesh/bmesh_py_ops_call.c
===================================================================
--- trunk/blender/source/blender/python/bmesh/bmesh_py_ops_call.c 2012-11-28 14:15:54 UTC (rev 52636)
+++ trunk/blender/source/blender/python/bmesh/bmesh_py_ops_call.c 2012-11-28 15:07:57 UTC (rev 52637)
@@ -584,8 +584,6 @@
PyObject *py_key = BPy_BMElem_CreatePyObject(bm, ele_key);
PyObject *py_val = BPy_BMElem_CreatePyObject(bm, *(void **)BMO_OP_SLOT_MAPPING_DATA(ele_val));
- BLI_assert(slot->slot_subtype.elem & ((BPy_BMElem *)py_val)->ele->head.htype);
-
PyDict_SetItem(item, py_key, py_val);
Py_DECREF(py_key);
Py_DECREF(py_val);
@@ -714,19 +712,23 @@
Py_ssize_t pos = 0;
while (PyDict_Next(kw, &pos, &key, &value)) {
const char *slot_name = _PyUnicode_AsString(key);
- BMOpSlot *slot = BMO_slot_get(bmop.slots_in, slot_name);
+ BMOpSlot *slot;
- if (slot == NULL) {
+ if (!BMO_slot_exists(bmop.slots_in, slot_name)) {
PyErr_Format(PyExc_TypeError,
"%.200s: keyword \"%.200s\" is invalid for this operator",
self->opname, slot_name);
+ BMO_op_finish(bm, &bmop);
return NULL;
}
+ slot = BMO_slot_get(bmop.slots_in, slot_name);
+
/* now assign the value */
if (bpy_slot_from_py(bm, &bmop, slot, value,
self->opname, slot_name) == -1)
{
+ BMO_op_finish(bm, &bmop);
return NULL;
}
}
More information about the Bf-blender-cvs
mailing list