From d4fd65ffc9bc446fede89eed970175243377af77 Mon Sep 17 00:00:00 2001 From: Richard Antalik Date: Thu, 19 Oct 2023 01:55:38 +0200 Subject: [PATCH] Fix issues when adding retiming key outside of strip boundary When retiming key is added to frame before strip starts, this causes crash on null dereference. After adding null check, this creates retiming data, even though operation is not valid. To prevent creating empty retiming data, `SEQ_retiming_data_ensure()` is only executed, when operator actually adds a keyframe. --- source/blender/editors/space_sequencer/sequencer_retiming.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_sequencer/sequencer_retiming.cc b/source/blender/editors/space_sequencer/sequencer_retiming.cc index ad272dee8aa..60f5ecfa0bc 100644 --- a/source/blender/editors/space_sequencer/sequencer_retiming.cc +++ b/source/blender/editors/space_sequencer/sequencer_retiming.cc @@ -202,11 +202,10 @@ static bool retiming_key_add_new_for_seq(bContext *C, const int timeline_frame) { Scene *scene = CTX_data_scene(C); - SEQ_retiming_data_ensure(seq); const int frame_index = BKE_scene_frame_get(scene) - SEQ_time_start_frame_get(seq); const SeqRetimingKey *key = SEQ_retiming_find_segment_start_key(seq, frame_index); - if (SEQ_retiming_key_is_transition_start(key)) { + if (key != nullptr && SEQ_retiming_key_is_transition_start(key)) { BKE_report(op->reports, RPT_WARNING, "Can not create key inside of speed transition"); return false; } @@ -216,6 +215,7 @@ static bool retiming_key_add_new_for_seq(bContext *C, return false; } + SEQ_retiming_data_ensure(seq); SEQ_retiming_add_key(scene, seq, timeline_frame); return true; }