[FFmpeg-cvslog] lavfi/frei0r: in init() check path loop, free resources in a single point

Stefano Sabatini git at videolan.org
Sun Nov 18 16:54:16 CET 2012


ffmpeg | branch: master | Stefano Sabatini <stefasab at gmail.com> | Fri Nov 16 10:58:37 2012 +0100| [158763312f97dd1cf635114c52c550800eda83d2] | committer: Stefano Sabatini

lavfi/frei0r: in init() check path loop, free resources in a single point

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=158763312f97dd1cf635114c52c550800eda83d2
---

 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 9604b46..7e89e57 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);



More information about the ffmpeg-cvslog mailing list