Commit d371c3c2 authored by Anton Khirnov's avatar Anton Khirnov

vf_frei0r: make config_props work properly when called multiple times.

Do not leak the initialized filter instance.
parent 87c31cfd
...@@ -317,6 +317,8 @@ static int config_input_props(AVFilterLink *inlink) ...@@ -317,6 +317,8 @@ static int config_input_props(AVFilterLink *inlink)
AVFilterContext *ctx = inlink->dst; AVFilterContext *ctx = inlink->dst;
Frei0rContext *s = ctx->priv; Frei0rContext *s = ctx->priv;
if (s->destruct && s->instance)
s->destruct(s->instance);
if (!(s->instance = s->construct(inlink->w, inlink->h))) { if (!(s->instance = s->construct(inlink->w, inlink->h))) {
av_log(ctx, AV_LOG_ERROR, "Impossible to load frei0r instance"); av_log(ctx, AV_LOG_ERROR, "Impossible to load frei0r instance");
return AVERROR(EINVAL); return AVERROR(EINVAL);
...@@ -451,6 +453,8 @@ static int source_config_props(AVFilterLink *outlink) ...@@ -451,6 +453,8 @@ static int source_config_props(AVFilterLink *outlink)
outlink->h = s->h; outlink->h = s->h;
outlink->time_base = s->time_base; outlink->time_base = s->time_base;
if (s->destruct && s->instance)
s->destruct(s->instance);
if (!(s->instance = s->construct(outlink->w, outlink->h))) { if (!(s->instance = s->construct(outlink->w, outlink->h))) {
av_log(ctx, AV_LOG_ERROR, "Impossible to load frei0r instance"); av_log(ctx, AV_LOG_ERROR, "Impossible to load frei0r instance");
return AVERROR(EINVAL); return AVERROR(EINVAL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment