Fix (Unreported) VSE crash when editing retiming

Caused by loop over `MutableSpan`, but underlying array can be
reallocated. Do index based looping instead.

Pull Request: https://projects.blender.org/blender/blender/pulls/115121
This commit is contained in:
Richard Antalik
2023-11-21 05:27:36 +01:00
committed by Richard Antalik
parent 918515495e
commit d0e9468848

View File

@@ -961,18 +961,21 @@ void SEQ_retiming_key_timeline_frame_set(const Scene *scene,
scene, seq, key, timeline_frame);
const int offset = clamped_timeline_frame - orig_timeline_frame;
MutableSpan keys = SEQ_retiming_keys_get(seq);
const int key_count = SEQ_retiming_keys_get(seq).size();
const int key_index = SEQ_retiming_key_index_get(seq, key);
if (orig_timeline_frame == SEQ_time_right_handle_frame_get(scene, seq)) {
for (; key < keys.end(); key++) {
seq_retiming_key_offset(scene, seq, key, offset);
for (int i = key_index; i < key_count; i++) {
SeqRetimingKey *key_iter = &SEQ_retiming_keys_get(seq)[i];
seq_retiming_key_offset(scene, seq, key_iter, offset);
}
}
else if (orig_timeline_frame == SEQ_time_left_handle_frame_get(scene, seq) ||
key->strip_frame_index == 0)
{
seq->start += offset;
key++;
for (; key < keys.end(); key++) {
for (int i = key_index + 1; i < key_count; i++) {
SeqRetimingKey *key_iter = &SEQ_retiming_keys_get(seq)[i];
seq_retiming_key_offset(scene, seq, key, -offset);
}
}