[Bf-blender-cvs] [dbef66c32f7] blender-v3.1-release: Fix T95952: Uninitialized value used in Bezier Segment node

Hans Goudey noreply at git.blender.org
Wed Feb 23 19:57:17 CET 2022


Commit: dbef66c32f728546c6b0a1759a38e7edd9fa4dfc
Author: Hans Goudey
Date:   Wed Feb 23 13:57:04 2022 -0500
Branches: blender-v3.1-release
https://developer.blender.org/rBdbef66c32f728546c6b0a1759a38e7edd9fa4dfc

Fix T95952: Uninitialized value used in Bezier Segment node

0fd72a98ac1377a385b6 called functions to set bezier handle positions
that used uninitialized memory. The fix is to define the handle positions
explicitly, like before.

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

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

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

diff --git a/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_bezier_segment.cc b/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_bezier_segment.cc
index 7d84ddf9917..6e1c8a80a00 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_bezier_segment.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_curve_primitive_bezier_segment.cc
@@ -91,13 +91,22 @@ static std::unique_ptr<CurveEval> create_bezier_segment_curve(
   positions.first() = start;
   positions.last() = end;
 
+  MutableSpan<float3> handles_right = spline->handle_positions_right();
+  MutableSpan<float3> handles_left = spline->handle_positions_left();
+
   if (mode == GEO_NODE_CURVE_PRIMITIVE_BEZIER_SEGMENT_POSITION) {
-    spline->set_handle_position_right(0, start_handle_right);
-    spline->set_handle_position_left(1, end_handle_left);
+    handles_left.first() = 2.0f * start - start_handle_right;
+    handles_right.first() = start_handle_right;
+
+    handles_left.last() = end_handle_left;
+    handles_right.last() = 2.0f * end - end_handle_left;
   }
   else {
-    spline->set_handle_position_right(0, start + start_handle_right);
-    spline->set_handle_position_left(1, end + end_handle_left);
+    handles_left.first() = start - start_handle_right;
+    handles_right.first() = start + start_handle_right;
+
+    handles_left.last() = end + end_handle_left;
+    handles_right.last() = end - end_handle_left;
   }
 
   curve->add_spline(std::move(spline));



More information about the Bf-blender-cvs mailing list