[Bf-blender-cvs] [2b51124d6a5] master: Fix T89450: Crash slicing BMEditSelSeq

Campbell Barton noreply at git.blender.org
Thu Aug 5 08:56:09 CEST 2021


Commit: 2b51124d6a59bedf00397d4ef2fd4442c4fddd22
Author: Campbell Barton
Date:   Thu Aug 5 16:44:01 2021 +1000
Branches: master
https://developer.blender.org/rB2b51124d6a59bedf00397d4ef2fd4442c4fddd22

Fix T89450: Crash slicing BMEditSelSeq

Slicing with indices greater than the length of the sequence would crash.

===================================================================

M	source/blender/python/bmesh/bmesh_py_types_select.c

===================================================================

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;
 }



More information about the Bf-blender-cvs mailing list