From fa8574b80b21de7cc93b4ebe2a72a89884facb4c Mon Sep 17 00:00:00 2001 From: Iliya Katueshenock Date: Fri, 3 Jan 2025 01:42:39 +0100 Subject: [PATCH] Fix: Geometry Nodes: Triangulate Mesh node assertion case Typo from ea875f6f3278998506e41418353a86c8c845bed4. A range of triangles is pushed into the mask, but _last_ instead of _end_ was used. This was found in #132333 report, but this PR does not fix a reported issue. Pull Request: https://projects.blender.org/blender/blender/pulls/132405 --- source/blender/geometry/intern/mesh_triangulate.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/blender/geometry/intern/mesh_triangulate.cc b/source/blender/geometry/intern/mesh_triangulate.cc index 2c977e416f3..5ce02e25a69 100644 --- a/source/blender/geometry/intern/mesh_triangulate.cc +++ b/source/blender/geometry/intern/mesh_triangulate.cc @@ -554,12 +554,13 @@ static IndexMask calc_unselected_faces(const Mesh &mesh, memory, [&](const IndexMaskSegment universe_segment, IndexRangesBuilder &builder) { if (unique_sorted_indices::non_empty_is_range(universe_segment.base_span())) { - const IndexRange segment_range(universe_segment[0], universe_segment.size()); + const IndexRange universe_as_range = unique_sorted_indices::non_empty_as_range( + universe_segment.base_span()); + const IndexRange segment_range = universe_as_range.shift(universe_segment.offset()); const OffsetIndices segment_faces = src_faces.slice(segment_range); if (segment_faces.total_size() == segment_faces.size() * 3) { /* All faces in segment are triangles. */ - builder.add_range(universe_segment.base_span().first(), - universe_segment.base_span().last()); + builder.add_range(universe_as_range.start(), universe_as_range.one_after_last()); return universe_segment.offset(); } }