From a4051b31d52659045f55d22cdc15f2eba63ab3f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20T=C3=B6nne?= Date: Mon, 12 Feb 2024 16:44:28 +0100 Subject: [PATCH] Fix #118135: Make sure the new active index is always valid When deleting all the segments the active index is generally 0. Adding a new segment increments the active index, which pushes it out of range. The code should not expect active index to be inside the current range. Pull Request: https://projects.blender.org/blender/blender/pulls/118143 --- source/blender/editors/object/object_modifier.cc | 2 +- source/blender/makesdna/DNA_modifier_defaults.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/object/object_modifier.cc b/source/blender/editors/object/object_modifier.cc index 465ddeb7594..0d17ba4e70f 100644 --- a/source/blender/editors/object/object_modifier.cc +++ b/source/blender/editors/object/object_modifier.cc @@ -3755,7 +3755,7 @@ static int dash_modifier_segment_add_exec(bContext *C, wmOperator *op) GreasePencilDashModifierSegment *new_segments = static_cast( MEM_malloc_arrayN(dmd->segments_num + 1, sizeof(GreasePencilDashModifierSegment), __func__)); - const int new_active_index = dmd->segment_active_index + 1; + const int new_active_index = std::clamp(dmd->segment_active_index + 1, 0, dmd->segments_num); if (dmd->segments_num != 0) { /* Copy the segments before the new segment. */ memcpy(new_segments, diff --git a/source/blender/makesdna/DNA_modifier_defaults.h b/source/blender/makesdna/DNA_modifier_defaults.h index 33ad7b51f88..1932f03b7d6 100644 --- a/source/blender/makesdna/DNA_modifier_defaults.h +++ b/source/blender/makesdna/DNA_modifier_defaults.h @@ -888,7 +888,7 @@ #define _DNA_DEFAULT_GreasePencilDashModifierSegment \ { \ - .name = "", \ + .name = "Segment", \ .dash = 2, \ .gap = 1, \ .radius = 1.0f, \