Merge branch 'master' into blender2.8

This commit is contained in:
2017-10-24 12:19:48 +02:00
17 changed files with 335 additions and 325 deletions

View File

@@ -3872,7 +3872,7 @@ void *BPy_BMElem_PySeq_As_Array_FAST(
BMesh *bm = (r_bm && *r_bm) ? *r_bm : NULL;
PyObject **seq_fast_items = PySequence_Fast_ITEMS(seq_fast);
const Py_ssize_t seq_len = PySequence_Fast_GET_SIZE(seq_fast);
Py_ssize_t i;
Py_ssize_t i, i_last_dirty = PY_SSIZE_T_MAX;
BPy_BMElem *item;
BMElem **alloc;
@@ -3921,6 +3921,7 @@ void *BPy_BMElem_PySeq_As_Array_FAST(
if (do_unique_check) {
BM_elem_flag_enable(item->ele, BM_ELEM_INTERNAL_TAG);
i_last_dirty = i;
}
}
@@ -3937,6 +3938,8 @@ void *BPy_BMElem_PySeq_As_Array_FAST(
}
if (ok == false) {
/* Cleared above. */
i_last_dirty = PY_SSIZE_T_MAX;
PyErr_Format(PyExc_ValueError,
"%s: found the same %.200s used multiple times",
error_prefix, BPy_BMElem_StringFromHType(htype));
@@ -3949,6 +3952,11 @@ void *BPy_BMElem_PySeq_As_Array_FAST(
return alloc;
err_cleanup:
if (do_unique_check && (i_last_dirty != PY_SSIZE_T_MAX)) {
for (i = 0; i <= i_last_dirty; i++) {
BM_elem_flag_disable(alloc[i], BM_ELEM_INTERNAL_TAG);
}
}
PyMem_FREE(alloc);
return NULL;