diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 73b0a77d2b22034324e971cf4a8c27e709c72a56..2986e8ecaecd75832f56145687054192b581815e 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;
         }