Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2021-08-05 09:44:01 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-08-05 09:44:01 +0300
commit2b51124d6a59bedf00397d4ef2fd4442c4fddd22 (patch)
tree2a6a3cd4c717eee349ba7c802aa245948747b229
parent450593ddf0959681b05686368b80963840f297d0 (diff)
Fix T89450: Crash slicing BMEditSelSeq
Slicing with indices greater than the length of the sequence would crash.
-rw-r--r--source/blender/python/bmesh/bmesh_py_types_select.c19
1 files changed, 5 insertions, 14 deletions
diff --git a/source/blender/python/bmesh/bmesh_py_types_select.c b/source/blender/python/bmesh/bmesh_py_types_select.c
index 9bb9815f731..99f17bcec8f 100644
--- a/source/blender/python/bmesh/bmesh_py_types_select.c
+++ b/source/blender/python/bmesh/bmesh_py_types_select.c
@@ -205,7 +205,6 @@ static PyObject *bpy_bmeditselseq_subscript_slice(BPy_BMEditSelSeq *self,
Py_ssize_t stop)
{
int count = 0;
- bool ok;
PyObject *list;
BMEditSelection *ese;
@@ -214,30 +213,22 @@ static PyObject *bpy_bmeditselseq_subscript_slice(BPy_BMEditSelSeq *self,
list = PyList_New(0);
- ese = self->bm->selected.first;
-
- ok = (ese != NULL);
-
- if (UNLIKELY(ok == false)) {
- return list;
- }
-
- /* first loop up-until the start */
- for (ok = true; ok; ok = ((ese = ese->next) != NULL)) {
+ /* First loop up-until the start. */
+ for (ese = self->bm->selected.first; ese; ese = ese->next) {
if (count == start) {
break;
}
count++;
}
- /* add items until stop */
- do {
+ /* Add items until stop. */
+ for (; ese; ese = ese->next) {
PyList_APPEND(list, BPy_BMElem_CreatePyObject(self->bm, &ese->ele->head));
count++;
if (count == stop) {
break;
}
- } while ((ese = ese->next));
+ }
return list;
}