[Bf-blender-cvs] [e97ab83] master: PyAPI: fix leak in unlikely case converting idprops fail
Campbell Barton
noreply at git.blender.org
Sun Jul 31 09:24:28 CEST 2016
Commit: e97ab8347a16f84bdddeaf53305cd9a7f42860ab
Author: Campbell Barton
Date: Sun Jul 31 16:59:08 2016 +1000
Branches: master
https://developer.blender.org/rBe97ab8347a16f84bdddeaf53305cd9a7f42860ab
PyAPI: fix leak in unlikely case converting idprops fail
===================================================================
M source/blender/python/generic/idprop_py_api.c
===================================================================
diff --git a/source/blender/python/generic/idprop_py_api.c b/source/blender/python/generic/idprop_py_api.c
index c978ae5..2f8afdf 100644
--- a/source/blender/python/generic/idprop_py_api.c
+++ b/source/blender/python/generic/idprop_py_api.c
@@ -98,7 +98,7 @@ static PyObject *idprop_py_from_idp_array(ID *id, IDProperty *prop)
static PyObject *idprop_py_from_idp_idparray(ID *id, IDProperty *prop)
{
- PyObject *seq = PyList_New(prop->len), *wrap;
+ PyObject *seq = PyList_New(prop->len);
IDProperty *array = IDP_IDPArray(prop);
int i;
@@ -110,10 +110,13 @@ static PyObject *idprop_py_from_idp_idparray(ID *id, IDProperty *prop)
}
for (i = 0; i < prop->len; i++) {
- wrap = BPy_IDGroup_WrapData(id, array++, prop);
+ PyObject *wrap = BPy_IDGroup_WrapData(id, array++, prop);
- if (!wrap) /* BPy_IDGroup_MapDataToPy sets the error */
+ /* BPy_IDGroup_MapDataToPy sets the error */
+ if (UNLIKELY(wrap == NULL)) {
+ Py_DECREF(seq);
return NULL;
+ }
PyList_SET_ITEM(seq, i, wrap);
}
@@ -659,7 +662,7 @@ static PyObject *BPy_IDGroup_MapDataToPy(IDProperty *prop)
}
case IDP_IDPARRAY:
{
- PyObject *seq = PyList_New(prop->len), *wrap;
+ PyObject *seq = PyList_New(prop->len);
IDProperty *array = IDP_IDPArray(prop);
int i;
@@ -671,10 +674,13 @@ static PyObject *BPy_IDGroup_MapDataToPy(IDProperty *prop)
}
for (i = 0; i < prop->len; i++) {
- wrap = BPy_IDGroup_MapDataToPy(array++);
+ PyObject *wrap = BPy_IDGroup_MapDataToPy(array++);
- if (!wrap) /* BPy_IDGroup_MapDataToPy sets the error */
+ /* BPy_IDGroup_MapDataToPy sets the error */
+ if (UNLIKELY(wrap == NULL)) {
+ Py_DECREF(seq);
return NULL;
+ }
PyList_SET_ITEM(seq, i, wrap);
}
@@ -682,14 +688,17 @@ static PyObject *BPy_IDGroup_MapDataToPy(IDProperty *prop)
}
case IDP_GROUP:
{
- PyObject *dict = PyDict_New(), *wrap;
+ PyObject *dict = PyDict_New();
IDProperty *loop;
for (loop = prop->data.group.first; loop; loop = loop->next) {
- wrap = BPy_IDGroup_MapDataToPy(loop);
+ PyObject *wrap = BPy_IDGroup_MapDataToPy(loop);
- if (!wrap) /* BPy_IDGroup_MapDataToPy sets the error */
+ /* BPy_IDGroup_MapDataToPy sets the error */
+ if (UNLIKELY(wrap == NULL)) {
+ Py_DECREF(dict);
return NULL;
+ }
PyDict_SetItemString(dict, loop->name, wrap);
Py_DECREF(wrap);
More information about the Bf-blender-cvs
mailing list