free Track and unset priv_data to avoid double free, fix memleak
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>
Fri, 15 May 2009 05:33:05 +0000 (05:33 +0000)
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>
Fri, 15 May 2009 05:33:05 +0000 (05:33 +0000)
Originally committed as revision 18836 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/mxfdec.c

index 73b0a77..2986e8e 100644 (file)
@@ -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;
         }