diff options
author | Vitor Sessak <vitor1001@gmail.com> | 2008-05-24 20:42:26 +0000 |
---|---|---|
committer | Vitor Sessak <vitor1001@gmail.com> | 2008-05-24 20:42:26 +0000 |
commit | 64b164f44abc232dbb125b36e2d00b54e1531ba7 (patch) | |
tree | eac6a7736092a8cd6a1f2be7518190a4afd9915e /libavfilter | |
parent | 90ed076ce341c32989f720af53f109ee58df9fb7 (diff) | |
download | ffmpeg-64b164f44abc232dbb125b36e2d00b54e1531ba7.tar.gz |
Plug some memory leaks
Commited in SoC by Vitor Sessak on 2008-05-24 17:15:18
Originally committed as revision 13357 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavfilter')
-rw-r--r-- | libavfilter/graphparser.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c index 3883ae94d1..2a8a017990 100644 --- a/libavfilter/graphparser.c +++ b/libavfilter/graphparser.c @@ -144,8 +144,10 @@ static AVFilterContext *create_filter(AVFilterGraph *ctx, int index, return NULL; } - if(avfilter_graph_add_filter(ctx, filt) < 0) + if(avfilter_graph_add_filter(ctx, filt) < 0) { + avfilter_destroy(filt); return NULL; + } if(avfilter_init_filter(filt, args, NULL)) { av_log(log_ctx, AV_LOG_ERROR, @@ -164,19 +166,24 @@ static AVFilterContext *parse_filter(const char **buf, AVFilterGraph *graph, { char *opts = NULL; char *name = consume_string(buf); + AVFilterContext *ret; if(**buf == '=') { (*buf)++; opts = consume_string(buf); } - return create_filter(graph, index, name, opts, log_ctx); + ret = create_filter(graph, index, name, opts, log_ctx); + av_free(name); + av_free(opts); + return ret; } static void free_inout(AVFilterInOut *head) { while(head) { AVFilterInOut *next = head->next; + av_free(head->name); av_free(head); head = next; } @@ -222,6 +229,7 @@ static int link_filter_inouts(AVFilterContext *filter, if(p->filter) { if(link_filter(p->filter, p->pad_idx, filter, pad, log_ctx)) return -1; + av_free(p->name); av_free(p); } else { p->filter = filter; @@ -318,6 +326,8 @@ static int parse_outputs(const char **buf, AVFilterInOut **currInputs, if(link_filter(input->filter, input->pad_idx, match->filter, match->pad_idx, log_ctx) < 0) return -1; + av_free(match->name); + av_free(name); av_free(match); av_free(input); } else { |