[Bf-blender-cvs] [d19443074a8] master: Fix (unreported): off-by-one error when setting curve handles
Jacques Lucke
noreply at git.blender.org
Sun Dec 5 14:50:39 CET 2021
Commit: d19443074a8ed9a5717b56f0254bd416c5e76923
Author: Jacques Lucke
Date: Sun Dec 5 14:49:30 2021 +0100
Branches: master
https://developer.blender.org/rBd19443074a8ed9a5717b56f0254bd416c5e76923
Fix (unreported): off-by-one error when setting curve handles
The problem is that `current_mask` can become `selection.size()`.
The loop could also be refactored to break out of it when the end
of the selection is reached. This can be done separately.
===================================================================
M source/blender/nodes/geometry/nodes/node_geo_set_curve_handles.cc
===================================================================
diff --git a/source/blender/nodes/geometry/nodes/node_geo_set_curve_handles.cc b/source/blender/nodes/geometry/nodes/node_geo_set_curve_handles.cc
index f0b8579ae7d..5382b69feae 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_set_curve_handles.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_set_curve_handles.cc
@@ -75,7 +75,7 @@ static void set_position_in_component(const GeometryNodeCurveHandleMode mode,
if (spline->type() == Spline::Type::Bezier) {
BezierSpline &bezier = static_cast<BezierSpline &>(*spline);
for (int i : bezier.positions().index_range()) {
- if (selection[current_mask] == current_point) {
+ if (current_mask < selection.size() && selection[current_mask] == current_point) {
if (mode & GEO_NODE_CURVE_HANDLE_LEFT) {
if (bezier.handle_types_left()[i] == BezierSpline::HandleType::Vector) {
bezier.ensure_auto_handles();
@@ -103,7 +103,7 @@ static void set_position_in_component(const GeometryNodeCurveHandleMode mode,
}
else {
for (int UNUSED(i) : spline->positions().index_range()) {
- if (selection[current_mask] == current_point) {
+ if (current_mask < selection.size() && selection[current_mask] == current_point) {
current_mask++;
}
current_point++;
More information about the Bf-blender-cvs
mailing list