vf_frei0r: make config_props work properly when called multiple times.
authorAnton Khirnov <anton@khirnov.net>
Mon, 18 Mar 2013 20:31:54 +0000 (21:31 +0100)
committerAnton Khirnov <anton@khirnov.net>
Fri, 17 May 2013 05:42:46 +0000 (07:42 +0200)
Do not leak the initialized filter instance.

libavfilter/vf_frei0r.c

index ff7e308..7e79b28 100644 (file)
@@ -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);