summaryrefslogtreecommitdiff
path: root/libavfilter
diff options
context:
space:
mode:
authorVitor Sessak <vitor1001@gmail.com>2008-05-24 20:42:26 +0000
committerVitor Sessak <vitor1001@gmail.com>2008-05-24 20:42:26 +0000
commit64b164f44abc232dbb125b36e2d00b54e1531ba7 (patch)
treeeac6a7736092a8cd6a1f2be7518190a4afd9915e /libavfilter
parent90ed076ce341c32989f720af53f109ee58df9fb7 (diff)
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.c14
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 {