[Bf-blender-cvs] [2ab72f6db83] master: Fix T103964: Assert on mouse hover of empty node editor

Hans Goudey noreply at git.blender.org
Thu Jan 19 22:51:05 CET 2023


Commit: 2ab72f6db8319b564dc6e3e6c0a6c26d253fda30
Author: Hans Goudey
Date:   Thu Jan 19 15:49:49 2023 -0600
Branches: master
https://developer.blender.org/rB2ab72f6db8319b564dc6e3e6c0a6c26d253fda30

Fix T103964: Assert on mouse hover of empty node editor

The reverse iteration added in e091291b5b5f525cd8d3 didn't handle
the case where there are no nodes properly. Thanks to Iliya Katueshenock
for investigating this.

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

M	source/blender/editors/space_node/node_draw.cc
M	source/blender/editors/space_node/node_edit.cc

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

diff --git a/source/blender/editors/space_node/node_draw.cc b/source/blender/editors/space_node/node_draw.cc
index d3b34c408cf..bc4b6d416c1 100644
--- a/source/blender/editors/space_node/node_draw.cc
+++ b/source/blender/editors/space_node/node_draw.cc
@@ -2621,8 +2621,10 @@ int node_get_resize_cursor(NodeResizeDirection directions)
 
 static const bNode *find_node_under_cursor(SpaceNode &snode, const float2 &cursor)
 {
-  /* Check nodes front to back. */
   const Span<bNode *> nodes = snode.edittree->all_nodes();
+  if (nodes.is_empty()) {
+    return nullptr;
+  }
   for (int i = nodes.index_range().last(); i >= 0; i--) {
     if (BLI_rctf_isect_pt(&nodes[i]->runtime->totr, cursor[0], cursor[1])) {
       return nodes[i];
diff --git a/source/blender/editors/space_node/node_edit.cc b/source/blender/editors/space_node/node_edit.cc
index d93b93d8f8c..fc039746639 100644
--- a/source/blender/editors/space_node/node_edit.cc
+++ b/source/blender/editors/space_node/node_edit.cc
@@ -1135,8 +1135,11 @@ bNodeSocket *node_find_indicated_socket(SpaceNode &snode,
     /* Sockets haven't been drawn yet, e.g. when the file is currently opening. */
     return nullptr;
   }
-
   const Span<bNode *> nodes = snode.edittree->all_nodes();
+  if (nodes.is_empty()) {
+    return nullptr;
+  }
+
   for (int i = nodes.index_range().last(); i >= 0; i--) {
     bNode &node = *nodes[i];



More information about the Bf-blender-cvs mailing list