diff options
author | Martijn Versteegh <Baardaap> | 2021-11-11 18:25:10 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2021-11-11 18:25:10 +0300 |
commit | 7aa39b40f40c2b037f97e009eabf8d4698c41ee4 (patch) | |
tree | 1da38dfe15f714c4eeb060100a9944f81014b1d2 /source/blender/blenkernel/intern/curve_eval.cc | |
parent | d26d3cfe193793728cac77be9b44463a84a0f57e (diff) |
Fix: Prevent use of uninitialized memory when creating Bezier spline
When Constructing bezier splines from dna, the positions of the
left/right handles were set directly in the internal vectors, by
requesting a reference to them. The problem is that
BezierSpline::handle_positions_left() calls ensure_auto_handles()
before returning the reference. That function does some calculations on
uninitialized memory if the positions array is not yet filled.
Differential Revision: https://developer.blender.org/D13107
Diffstat (limited to 'source/blender/blenkernel/intern/curve_eval.cc')
-rw-r--r-- | source/blender/blenkernel/intern/curve_eval.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/curve_eval.cc b/source/blender/blenkernel/intern/curve_eval.cc index bb745d5b20d..ff0478f2543 100644 --- a/source/blender/blenkernel/intern/curve_eval.cc +++ b/source/blender/blenkernel/intern/curve_eval.cc @@ -225,8 +225,8 @@ static SplinePtr spline_from_dna_bezier(const Nurb &nurb) Span<const BezTriple> src_points{nurb.bezt, nurb.pntsu}; spline->resize(src_points.size()); MutableSpan<float3> positions = spline->positions(); - MutableSpan<float3> handle_positions_left = spline->handle_positions_left(); - MutableSpan<float3> handle_positions_right = spline->handle_positions_right(); + MutableSpan<float3> handle_positions_left = spline->handle_positions_left(true); + MutableSpan<float3> handle_positions_right = spline->handle_positions_right(true); MutableSpan<BezierSpline::HandleType> handle_types_left = spline->handle_types_left(); MutableSpan<BezierSpline::HandleType> handle_types_right = spline->handle_types_right(); MutableSpan<float> radii = spline->radii(); |