diff options
author | Anton Khirnov <anton@khirnov.net> | 2013-03-18 21:31:54 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2013-05-17 07:42:46 +0200 |
commit | d371c3c2e2830d9783465ecfe1ab7d93351083b7 (patch) | |
tree | 1f329c6d5133b2ad8a5ad90362269de8bcc1a4d5 /libavfilter/vf_frei0r.c | |
parent | 87c31cfd7a2cd7893c589b4f25d6d45b196e20c1 (diff) | |
download | ffmpeg-d371c3c2e2830d9783465ecfe1ab7d93351083b7.tar.gz |
vf_frei0r: make config_props work properly when called multiple times.
Do not leak the initialized filter instance.
Diffstat (limited to 'libavfilter/vf_frei0r.c')
-rw-r--r-- | libavfilter/vf_frei0r.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libavfilter/vf_frei0r.c b/libavfilter/vf_frei0r.c index ff7e308a8d..7e79b28f8f 100644 --- a/libavfilter/vf_frei0r.c +++ b/libavfilter/vf_frei0r.c @@ -317,6 +317,8 @@ static int config_input_props(AVFilterLink *inlink) AVFilterContext *ctx = inlink->dst; Frei0rContext *s = ctx->priv; + if (s->destruct && s->instance) + s->destruct(s->instance); if (!(s->instance = s->construct(inlink->w, inlink->h))) { av_log(ctx, AV_LOG_ERROR, "Impossible to load frei0r instance"); return AVERROR(EINVAL); @@ -451,6 +453,8 @@ static int source_config_props(AVFilterLink *outlink) outlink->h = s->h; outlink->time_base = s->time_base; + if (s->destruct && s->instance) + s->destruct(s->instance); if (!(s->instance = s->construct(outlink->w, outlink->h))) { av_log(ctx, AV_LOG_ERROR, "Impossible to load frei0r instance"); return AVERROR(EINVAL); |