diff options
author | Richard Antalik <richardantalik@gmail.com> | 2021-07-01 23:14:29 +0300 |
---|---|---|
committer | Richard Antalik <richardantalik@gmail.com> | 2021-07-01 23:14:29 +0300 |
commit | b7b5c23b80b57b4b2d939e679ec6fc15aa8b8315 (patch) | |
tree | 71652a2524738518d58deee7968a2eab06866044 /source/blender/editors/transform | |
parent | 519c12da4162a42ed0ce2e41db45be21632ab446 (diff) |
Fix memory leak in VSE transform code
SeqCollection wasn't freed.
It wasn't easy to find culprit so added argument to
SEQ_collection_create() to pass function name.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D11746
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r-- | source/blender/editors/transform/transform_convert_sequencer.c | 7 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_snap_sequencer.c | 2 |
2 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/editors/transform/transform_convert_sequencer.c b/source/blender/editors/transform/transform_convert_sequencer.c index 51914004e70..a6f5aba5a1d 100644 --- a/source/blender/editors/transform/transform_convert_sequencer.c +++ b/source/blender/editors/transform/transform_convert_sequencer.c @@ -281,7 +281,7 @@ static bool seq_transform_check_overlap(SeqCollection *transformed_strips) static SeqCollection *extract_standalone_strips(SeqCollection *transformed_strips) { - SeqCollection *collection = SEQ_collection_create(); + SeqCollection *collection = SEQ_collection_create(__func__); Sequence *seq; SEQ_ITERATOR_FOREACH (seq, transformed_strips) { if ((seq->type & SEQ_TYPE_EFFECT) == 0 || seq->seq1 == NULL) { @@ -302,7 +302,7 @@ static SeqCollection *query_right_side_strips(ListBase *seqbase, SeqCollection * } } - SeqCollection *collection = SEQ_collection_create(); + SeqCollection *collection = SEQ_collection_create(__func__); LISTBASE_FOREACH (Sequence *, seq, seqbase) { if ((seq->flag & SELECT) == 0 && seq->startdisp >= minframe) { SEQ_collection_append_strip(seq, collection); @@ -407,7 +407,7 @@ static void seq_transform_handle_overlap(TransInfo *t, SeqCollection *transforme static SeqCollection *seq_transform_collection_from_transdata(TransDataContainer *tc) { - SeqCollection *collection = SEQ_collection_create(); + SeqCollection *collection = SEQ_collection_create(__func__); TransData *td = tc->data; for (int a = 0; a < tc->data_len; a++, td++) { Sequence *seq = ((TransDataSeq *)td->extra)->seq; @@ -428,6 +428,7 @@ static void freeSeqData(TransInfo *t, TransDataContainer *tc, TransCustomData *c if (t->state == TRANS_CANCEL) { seq_transform_cancel(t, transformed_strips); + SEQ_collection_free(transformed_strips); free_transform_custom_data(custom_data); return; } diff --git a/source/blender/editors/transform/transform_snap_sequencer.c b/source/blender/editors/transform/transform_snap_sequencer.c index 91bebc9c59d..d9395e5e960 100644 --- a/source/blender/editors/transform/transform_snap_sequencer.c +++ b/source/blender/editors/transform/transform_snap_sequencer.c @@ -108,7 +108,7 @@ static SeqCollection *query_snap_targets(const TransInfo *t) { const ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(t->scene, false)); const short snap_flag = SEQ_tool_settings_snap_flag_get(t->scene); - SeqCollection *collection = SEQ_collection_create(); + SeqCollection *collection = SEQ_collection_create(__func__); LISTBASE_FOREACH (Sequence *, seq, seqbase) { if ((seq->flag & SELECT)) { continue; /* Selected are being transformed. */ |