diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-10-29 02:53:39 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-10-29 02:53:39 +0300 |
commit | 8eb10de739f6225182f87b26a1f611d7653ce6f4 (patch) | |
tree | b36c356b4e6ca5b034077d6beb4a695fab14458f /source | |
parent | adf82fe943bc4ad600754d7172deeca319e73bff (diff) | |
parent | b43077ba3a2991096aa6484fcccd94d68998fb11 (diff) |
Merge branch 'blender-v3.0-release'
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/spline_base.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/spline_base.cc b/source/blender/blenkernel/intern/spline_base.cc index 663c1951ba3..bbe4e0aab7b 100644 --- a/source/blender/blenkernel/intern/spline_base.cc +++ b/source/blender/blenkernel/intern/spline_base.cc @@ -486,6 +486,12 @@ Array<float> Spline::sample_uniform_index_factors(const int samples_size) const prev_length = length; } + /* Zero lengths or float innacuracies can cause invalid values, or simply + * skip some, so set the values that weren't completed in the main loop. */ + for (const int i : IndexRange(i_sample, samples_size - i_sample)) { + samples[i] = float(samples_size); + } + if (!is_cyclic_) { /* In rare cases this can prevent overflow of the stored index. */ samples.last() = lengths.size(); |