From 9840dd233c0e8d092f26e884da76adf8891f0b05 Mon Sep 17 00:00:00 2001 From: Richard Antalik Date: Wed, 6 Nov 2024 05:24:49 +0100 Subject: [PATCH] Fix: VSE: use after free in for loop Same fix as 2a32b26415 - initialize range before using it in for loop Pull Request: https://projects.blender.org/blender/blender/pulls/129835 --- .../editors/space_sequencer/sequencer_retiming.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_sequencer/sequencer_retiming.cc b/source/blender/editors/space_sequencer/sequencer_retiming.cc index 5c51e233369..647f02baf8e 100644 --- a/source/blender/editors/space_sequencer/sequencer_retiming.cc +++ b/source/blender/editors/space_sequencer/sequencer_retiming.cc @@ -6,6 +6,7 @@ * \ingroup spseq */ +#include "BLI_map.hh" #include "MEM_guardedalloc.h" #include "BLI_set.hh" @@ -359,7 +360,9 @@ static bool freeze_frame_add_from_retiming_selection(const bContext *C, Scene *scene = CTX_data_scene(C); bool success = false; - for (auto item : SEQ_retiming_selection_get(SEQ_editing_get(scene)).items()) { + blender::Map selection = SEQ_retiming_selection_get(SEQ_editing_get(scene)); + + for (auto item : selection.items()) { const int timeline_frame = SEQ_retiming_key_timeline_frame_get(scene, item.value, item.key); success |= freeze_frame_add_new_for_seq(C, op, item.value, timeline_frame, duration); SEQ_relations_invalidate_cache_raw(scene, item.value); @@ -463,7 +466,9 @@ static bool transition_add_from_retiming_selection(const bContext *C, Scene *scene = CTX_data_scene(C); bool success = false; - for (auto item : SEQ_retiming_selection_get(SEQ_editing_get(scene)).items()) { + blender::Map selection = SEQ_retiming_selection_get(SEQ_editing_get(scene)); + + for (auto item : selection.items()) { const int timeline_frame = SEQ_retiming_key_timeline_frame_get(scene, item.value, item.key); success |= transition_add_new_for_seq(C, op, item.value, timeline_frame, duration); }