[Bf-blender-cvs] [161aa5e0d03] master: Fix T101882: Division by zero in mesh topology nodes

Hans Goudey noreply at git.blender.org
Mon Oct 17 23:52:12 CEST 2022


Commit: 161aa5e0d039577964d7080817e3df229aa153c0
Author: Hans Goudey
Date:   Mon Oct 17 16:51:42 2022 -0500
Branches: master
https://developer.blender.org/rB161aa5e0d039577964d7080817e3df229aa153c0

Fix T101882: Division by zero in mesh topology nodes

A vertex might be connected to no edges or no faces. Most of these nodes
worked fine in that case, but we might as well make that explicit
and skip the sorting anyway.

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

M	source/blender/nodes/geometry/nodes/node_geo_mesh_topology_corners_of_vertex.cc
M	source/blender/nodes/geometry/nodes/node_geo_mesh_topology_edges_of_vertex.cc

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

diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_corners_of_vertex.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_corners_of_vertex.cc
index cce3f4e3648..036af2d3b93 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_corners_of_vertex.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_corners_of_vertex.cc
@@ -93,6 +93,10 @@ class CornersOfVertInput final : public bke::MeshFieldInput {
         }
 
         const Span<int> corners = vert_to_loop_map[vert_i];
+        if (corners.is_empty()) {
+          corner_of_vertex[selection_i] = 0;
+          continue;
+        }
 
         /* Retrieve the connected edge indices as 64 bit integers for #materialize_compressed. */
         corner_indices.reinitialize(corners.size());
diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_edges_of_vertex.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_edges_of_vertex.cc
index 053ef61deed..f0cc191e217 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_edges_of_vertex.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_topology_edges_of_vertex.cc
@@ -93,6 +93,10 @@ class EdgesOfVertInput final : public bke::MeshFieldInput {
         }
 
         const Span<int> edges = vert_to_edge_map[vert_i];
+        if (edges.is_empty()) {
+          edge_of_vertex[selection_i] = 0;
+          continue;
+        }
 
         /* Retrieve the connected edge indices as 64 bit integers for #materialize_compressed. */
         edge_indices.reinitialize(edges.size());



More information about the Bf-blender-cvs mailing list