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/sequencer | |
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/sequencer')
-rw-r--r-- | source/blender/sequencer/SEQ_iterator.h | 2 | ||||
-rw-r--r-- | source/blender/sequencer/intern/iterator.c | 12 | ||||
-rw-r--r-- | source/blender/sequencer/intern/render.c | 2 | ||||
-rw-r--r-- | source/blender/sequencer/intern/strip_edit.c | 4 |
4 files changed, 10 insertions, 10 deletions
diff --git a/source/blender/sequencer/SEQ_iterator.h b/source/blender/sequencer/SEQ_iterator.h index eab2277bbe3..aa2e182e1c0 100644 --- a/source/blender/sequencer/SEQ_iterator.h +++ b/source/blender/sequencer/SEQ_iterator.h @@ -70,7 +70,7 @@ bool SEQ_iterator_ensure(SeqCollection *collection, struct Sequence **r_seq); struct Sequence *SEQ_iterator_yield(SeqIterator *iterator); -SeqCollection *SEQ_collection_create(void); +SeqCollection *SEQ_collection_create(const char *name); uint SEQ_collection_len(const SeqCollection *collection); bool SEQ_collection_append_strip(struct Sequence *seq, SeqCollection *data); bool SEQ_collection_remove_strip(struct Sequence *seq, SeqCollection *data); diff --git a/source/blender/sequencer/intern/iterator.c b/source/blender/sequencer/intern/iterator.c index 0754d9b38ed..20a2ee3b183 100644 --- a/source/blender/sequencer/intern/iterator.c +++ b/source/blender/sequencer/intern/iterator.c @@ -106,9 +106,9 @@ void SEQ_collection_free(SeqCollection *collection) * * \return empty strip collection. */ -SeqCollection *SEQ_collection_create(void) +SeqCollection *SEQ_collection_create(const char *name) { - SeqCollection *collection = MEM_callocN(sizeof(SeqCollection), "SeqCollection"); + SeqCollection *collection = MEM_callocN(sizeof(SeqCollection), name); collection->set = BLI_gset_new( BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "SeqCollection GSet"); return collection; @@ -136,7 +136,7 @@ SeqCollection *SEQ_query_by_reference(Sequence *seq_reference, ListBase *seqbase, SeqCollection *collection)) { - SeqCollection *collection = SEQ_collection_create(); + SeqCollection *collection = SEQ_collection_create(__func__); seq_query_func(seq_reference, seqbase, collection); return collection; } @@ -223,7 +223,7 @@ void SEQ_collection_expand(ListBase *seqbase, */ SeqCollection *SEQ_query_all_strips_recursive(ListBase *seqbase) { - SeqCollection *collection = SEQ_collection_create(); + SeqCollection *collection = SEQ_collection_create(__func__); LISTBASE_FOREACH (Sequence *, seq, seqbase) { if (seq->type == SEQ_TYPE_META) { SEQ_collection_merge(collection, SEQ_query_all_strips_recursive(&seq->seqbase)); @@ -241,7 +241,7 @@ SeqCollection *SEQ_query_all_strips_recursive(ListBase *seqbase) */ SeqCollection *SEQ_query_all_strips(ListBase *seqbase) { - SeqCollection *collection = SEQ_collection_create(); + SeqCollection *collection = SEQ_collection_create(__func__); LISTBASE_FOREACH (Sequence *, seq, seqbase) { SEQ_collection_append_strip(seq, collection); } @@ -256,7 +256,7 @@ SeqCollection *SEQ_query_all_strips(ListBase *seqbase) */ SeqCollection *SEQ_query_selected_strips(ListBase *seqbase) { - SeqCollection *collection = SEQ_collection_create(); + SeqCollection *collection = SEQ_collection_create(__func__); LISTBASE_FOREACH (Sequence *, seq, seqbase) { if ((seq->flag & SELECT) == 0) { continue; diff --git a/source/blender/sequencer/intern/render.c b/source/blender/sequencer/intern/render.c index 7360d525ce3..2f6f0180835 100644 --- a/source/blender/sequencer/intern/render.c +++ b/source/blender/sequencer/intern/render.c @@ -308,7 +308,7 @@ static bool must_render_strip(const Sequence *seq, SeqCollection *strips_at_time static SeqCollection *query_strips_at_frame(ListBase *seqbase, const int timeline_frame) { - SeqCollection *collection = SEQ_collection_create(); + SeqCollection *collection = SEQ_collection_create(__func__); LISTBASE_FOREACH (Sequence *, seq, seqbase) { if (SEQ_time_strip_intersects_frame(seq, timeline_frame)) { diff --git a/source/blender/sequencer/intern/strip_edit.c b/source/blender/sequencer/intern/strip_edit.c index 3e6eb74fcb3..b9278b9f971 100644 --- a/source/blender/sequencer/intern/strip_edit.c +++ b/source/blender/sequencer/intern/strip_edit.c @@ -255,7 +255,7 @@ bool SEQ_edit_move_strip_to_meta(Scene *scene, return false; } - SeqCollection *collection = SEQ_collection_create(); + SeqCollection *collection = SEQ_collection_create(__func__); SEQ_collection_append_strip(src_seq, collection); SEQ_collection_expand(seqbase, collection, SEQ_query_strip_effect_chain); @@ -396,7 +396,7 @@ Sequence *SEQ_edit_strip_split(Main *bmain, return NULL; } - SeqCollection *collection = SEQ_collection_create(); + SeqCollection *collection = SEQ_collection_create(__func__); SEQ_collection_append_strip(seq, collection); SEQ_collection_expand(seqbase, collection, SEQ_query_strip_effect_chain); |