[Bf-blender-cvs] [67b657f07c9] master: Fix T94082: Curve to point empty evaluated NURBS crash

Hans Goudey noreply at git.blender.org
Wed Dec 15 01:57:54 CET 2021


Commit: 67b657f07c96c5782ebf603ab36af607168d7acb
Author: Hans Goudey
Date:   Tue Dec 14 18:57:45 2021 -0600
Branches: master
https://developer.blender.org/rB67b657f07c96c5782ebf603ab36af607168d7acb

Fix T94082: Curve to point empty evaluated NURBS crash

This is basically the same as rBee4ed99866fbb7ab04, the fix is
simply to check if the spline has evaluated points when deciding
the offsets into the result points array.

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

M	source/blender/nodes/geometry/nodes/node_geo_curve_to_points.cc

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

diff --git a/source/blender/nodes/geometry/nodes/node_geo_curve_to_points.cc b/source/blender/nodes/geometry/nodes/node_geo_curve_to_points.cc
index 5c12a4bf7bd..2f9dfa8158b 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_curve_to_points.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_curve_to_points.cc
@@ -94,9 +94,14 @@ static Array<int> calculate_spline_point_offsets(GeoNodeExecParams &params,
         return {0};
       }
       Array<int> offsets(size + 1);
-      for (const int i : offsets.index_range()) {
-        offsets[i] = count * i;
+      int offset = 0;
+      for (const int i : IndexRange(size)) {
+        offsets[i] = offset;
+        if (splines[i]->evaluated_points_size() > 0) {
+          offset += count;
+        }
       }
+      offsets.last() = offset;
       return offsets;
     }
     case GEO_NODE_CURVE_RESAMPLE_LENGTH: {
@@ -106,7 +111,9 @@ static Array<int> calculate_spline_point_offsets(GeoNodeExecParams &params,
       int offset = 0;
       for (const int i : IndexRange(size)) {
         offsets[i] = offset;
-        offset += splines[i]->length() / resolution + 1;
+        if (splines[i]->evaluated_points_size() > 0) {
+          offset += splines[i]->length() / resolution + 1;
+        }
       }
       offsets.last() = offset;
       return offsets;



More information about the Bf-blender-cvs mailing list