From 158763312f97dd1cf635114c52c550800eda83d2 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Fri, 16 Nov 2012 10:58:37 +0100 Subject: [PATCH] lavfi/frei0r: in init() check path loop, free resources in a single point --- libavfilter/vf_frei0r.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/libavfilter/vf_frei0r.c b/libavfilter/vf_frei0r.c index 9604b46147..7e89e57049 100644 --- a/libavfilter/vf_frei0r.c +++ b/libavfilter/vf_frei0r.c @@ -237,19 +237,21 @@ static av_cold int frei0r_init(AVFilterContext *ctx, /* add additional trailing slash in case it is missing */ char *p1 = av_asprintf("%s/", p); if (!p1) { - av_free(path); - return AVERROR(ENOMEM); + ret = AVERROR(ENOMEM); + goto check_path_end; } ret = load_path(ctx, &frei0r->dl_handle, p1, dl_name); av_free(p1); - if (ret < 0) { - av_free(path); - return ret; - } + if (ret < 0) + goto check_path_end; if (frei0r->dl_handle) break; } + + check_path_end: av_free(path); + if (ret < 0) + return ret; } if (!frei0r->dl_handle && (path = getenv("HOME"))) { char *prefix = av_asprintf("%s/.frei0r-1/lib/", path);