From 8be080aebb817e45bdfbb9d13a405f900ecc6b99 Mon Sep 17 00:00:00 2001
From: Baptiste Coudurier <baptiste.coudurier@gmail.com>
Date: Fri, 15 May 2009 05:33:05 +0000
Subject: [PATCH] free Track and unset priv_data to avoid double free, fix
 memleak

Originally committed as revision 18836 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavformat/mxfdec.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 73b0a77d2b2..2986e8ecaec 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -943,6 +943,10 @@ static int mxf_read_close(AVFormatContext *s)
     int i;
 
     av_freep(&mxf->packages_refs);
+
+    for (i = 0; i < s->nb_streams; i++)
+        s->streams[i]->priv_data = NULL;
+
     for (i = 0; i < mxf->metadata_sets_count; i++) {
         switch (mxf->metadata_sets[i]->type) {
         case MultipleDescriptor:
@@ -955,9 +959,6 @@ static int mxf_read_close(AVFormatContext *s)
         case MaterialPackage:
             av_freep(&((MXFPackage *)mxf->metadata_sets[i])->tracks_refs);
             break;
-        case Track:
-            mxf->metadata_sets[i] = NULL; /* will be freed later */
-            break;
         default:
             break;
         }
-- 
GitLab