[Bf-blender-cvs] [e4289f23604] master: Fix errors in sequencer channel headers

Richard Antalik noreply at git.blender.org
Mon Apr 4 16:30:40 CEST 2022


Commit: e4289f23604a4dfa1b3ba45b9e5eaf7bf47f420c
Author: Richard Antalik
Date:   Mon Apr 4 16:27:37 2022 +0200
Branches: master
https://developer.blender.org/rBe4289f23604a4dfa1b3ba45b9e5eaf7bf47f420c

Fix errors in sequencer channel headers

Failing constraint test uncovered crashes on NULL dereference and
missing channels initialization in `SEQ_editing_ensure()`.

===================================================================

M	source/blender/editors/screen/screen_context.c
M	source/blender/editors/space_sequencer/sequencer_channels_draw.c
M	source/blender/sequencer/intern/sequencer.c

===================================================================

diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c
index d718c8b0d95..11a62123ad7 100644
--- a/source/blender/editors/screen/screen_context.c
+++ b/source/blender/editors/screen/screen_context.c
@@ -647,18 +647,20 @@ static eContextResult screen_ctx_selected_editable_sequences(const bContext *C,
   wmWindow *win = CTX_wm_window(C);
   Scene *scene = WM_window_get_active_scene(win);
   Editing *ed = SEQ_editing_get(scene);
+  if (ed == NULL) {
+    return CTX_RESULT_NO_DATA;
+  }
+
   ListBase *channels = SEQ_channels_displayed_get(ed);
-  if (ed) {
-    LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
-      if (seq->flag & SELECT && !SEQ_transform_is_locked(channels, seq)) {
-        CTX_data_list_add(result, &scene->id, &RNA_Sequence, seq);
-      }
+  LISTBASE_FOREACH (Sequence *, seq, ed->seqbasep) {
+    if (seq->flag & SELECT && !SEQ_transform_is_locked(channels, seq)) {
+      CTX_data_list_add(result, &scene->id, &RNA_Sequence, seq);
     }
-    CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
-    return CTX_RESULT_OK;
   }
-  return CTX_RESULT_NO_DATA;
+  CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
+  return CTX_RESULT_OK;
 }
+
 static eContextResult screen_ctx_active_nla_track(const bContext *C, bContextDataResult *result)
 {
   PointerRNA ptr;
diff --git a/source/blender/editors/space_sequencer/sequencer_channels_draw.c b/source/blender/editors/space_sequencer/sequencer_channels_draw.c
index 5a43eade999..b4bb4e950f0 100644
--- a/source/blender/editors/space_sequencer/sequencer_channels_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_channels_draw.c
@@ -347,6 +347,11 @@ void channel_draw_context_init(const bContext *C,
 
 void draw_channels(const bContext *C, ARegion *region)
 {
+  Editing *ed = SEQ_editing_get(CTX_data_scene(C));
+  if (ed == NULL) {
+    return;
+  }
+
   SeqChannelDrawContext context;
   channel_draw_context_init(C, region, &context);
 
diff --git a/source/blender/sequencer/intern/sequencer.c b/source/blender/sequencer/intern/sequencer.c
index baa06e133b7..faa527786fd 100644
--- a/source/blender/sequencer/intern/sequencer.c
+++ b/source/blender/sequencer/intern/sequencer.c
@@ -245,6 +245,8 @@ Editing *SEQ_editing_ensure(Scene *scene)
     ed->cache = NULL;
     ed->cache_flag = SEQ_CACHE_STORE_FINAL_OUT;
     ed->cache_flag |= SEQ_CACHE_STORE_RAW;
+    ed->displayed_channels = &ed->channels;
+    SEQ_channels_ensure(ed->displayed_channels);
   }
 
   return scene->ed;



More information about the Bf-blender-cvs mailing list