[Bf-extensions-cvs] [32baafe4] master: T91111: possible out of range when iterating over Math Vis item list

Gaia Clary noreply at git.blender.org
Mon Sep 6 13:58:45 CEST 2021


Commit: 32baafe44dc56edd1baf6e5a16b4439ded8238f2
Author: Gaia Clary
Date:   Fri Sep 3 13:03:31 2021 +0200
Branches: master
https://developer.blender.org/rBA32baafe44dc56edd1baf6e5a16b4439ded8238f2

T91111: possible out of range when iterating over Math Vis item list

While preparing T91111 i found an issue with out of date index after my recent changes.
The problem is:

bpy.context.window_manager.MathVisProp can be "0" even when the list is actually empty.

This patch fixes the index issue, although the true cause might still be found elsewhere.
there is more to fix, so this is only a first step to a complete fix.

Reviewed By: campbellbarton

Differential Revision: https://developer.blender.org/D12390

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

M	space_view3d_math_vis/draw.py
M	space_view3d_math_vis/utils.py

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

diff --git a/space_view3d_math_vis/draw.py b/space_view3d_math_vis/draw.py
index 0420044e..33f6a965 100644
--- a/space_view3d_math_vis/draw.py
+++ b/space_view3d_math_vis/draw.py
@@ -149,8 +149,12 @@ def draw_callback_view():
         bgl.glDepthFunc(bgl.GL_LESS)
 
     data_matrix, data_quat, data_euler, data_vector, data_vector_array = utils.console_math_data()
-    active_index = settings.index
-    active_key = prop_states[active_index].name if active_index >= 0 else None
+    if settings.index in range(0,len(prop_states)):
+        active_index = settings.index
+        active_key = prop_states[active_index].name
+    else:
+        active_index = -1
+        active_key = None
 
     if data_vector:
         coords = [tuple(vec.to_3d()) for vec in data_vector.values()]
diff --git a/space_view3d_math_vis/utils.py b/space_view3d_math_vis/utils.py
index 8174ee5d..a175dd5c 100644
--- a/space_view3d_math_vis/utils.py
+++ b/space_view3d_math_vis/utils.py
@@ -23,11 +23,14 @@ import bpy
 
 def console_namespace():
     import console_python
-    get_consoles = console_python.get_console
-    consoles = getattr(get_consoles, "consoles", None)
-    if consoles:
-        for console, stdout, stderr in get_consoles.consoles.values():
-            return console.locals
+    for window in bpy.context.window_manager.windows:
+        for area in window.screen.areas:
+            if area.type == 'CONSOLE':
+                for region in area.regions:
+                    if region.type == 'WINDOW':
+                        console = console_python.get_console(hash(region))
+                        if console:
+                            return console[0].locals
     return {}



More information about the Bf-extensions-cvs mailing list