[Bf-extensions-cvs] [3f282d22] master: Fix T66107: Error when numpy arrays are defined in math-vis add-on

Campbell Barton noreply at git.blender.org
Tue Jun 25 10:01:40 CEST 2019


Commit: 3f282d22fb44a65cebd45632b4d28920fbad5daf
Author: Campbell Barton
Date:   Tue Jun 25 18:01:01 2019 +1000
Branches: master
https://developer.blender.org/rBA3f282d22fb44a65cebd45632b4d28920fbad5daf

Fix T66107: Error when numpy arrays are defined in math-vis add-on

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

M	space_view3d_math_vis/utils.py

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

diff --git a/space_view3d_math_vis/utils.py b/space_view3d_math_vis/utils.py
index 50e4daff..7910bb9c 100644
--- a/space_view3d_math_vis/utils.py
+++ b/space_view3d_math_vis/utils.py
@@ -95,12 +95,29 @@ def get_math_data():
 
     variables = {}
     for key, var in locals.items():
-        if len(key)==0 or key[0] == "_" or not var:
+        if len(key) == 0 or key[0] == "_":
             continue
-        if type(var) in {Matrix, Vector, Quaternion, Euler} or \
-           type(var) in {tuple, list} and is_display_list(var):
 
-            variables[key] = type(var)
+        type_var = type(var)
+
+        # Rules out sets/dicts.
+        # It's also possible the length check below is slow
+        # for data with underlying linked-list structure.
+        if not hasattr(type_var, "__getitem__"):
+            continue
+
+        # Don't do a truth test on the data because this causes an error with some
+        # array types, see T66107.
+        len_fn = getattr(type_var, "__len__", None)
+        if len_fn is None:
+            continue
+        if len_fn(var) == 0:
+            continue
+
+        if type_var in {Matrix, Vector, Quaternion, Euler} or \
+           type_var in {tuple, list} and is_display_list(var):
+
+            variables[key] = type_var
 
     return variables



More information about the Bf-extensions-cvs mailing list