From a5e9102b4b2c853a75fb46a97968e26e1d8064a3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?M=C3=A5ns=20Rullg=C3=A5rd?= <mans@mansr.com>
Date: Fri, 16 Jun 2006 07:54:37 +0000
Subject: [PATCH] free codec extradata in av_close_input_file

Originally committed as revision 5484 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavformat/asf.c      | 1 -
 libavformat/avidec.c   | 1 -
 libavformat/matroska.c | 4 ----
 libavformat/nsvdec.c   | 1 -
 libavformat/nut.c      | 3 ---
 libavformat/ogg.c      | 1 -
 libavformat/ogg2.c     | 1 -
 libavformat/smacker.c  | 5 -----
 libavformat/utils.c    | 1 +
 9 files changed, 1 insertion(+), 17 deletions(-)

diff --git a/libavformat/asf.c b/libavformat/asf.c
index f4a920d3e7f..fd0da6ed3ac 100644
--- a/libavformat/asf.c
+++ b/libavformat/asf.c
@@ -730,7 +730,6 @@ static int asf_read_close(AVFormatContext *s)
     for(i=0;i<s->nb_streams;i++) {
         AVStream *st = s->streams[i];
         av_free(st->priv_data);
-        av_free(st->codec->extradata);
     av_free(st->codec->palctrl);
     }
     return 0;
diff --git a/libavformat/avidec.c b/libavformat/avidec.c
index 85e819c9b69..134652f3b02 100644
--- a/libavformat/avidec.c
+++ b/libavformat/avidec.c
@@ -898,7 +898,6 @@ static int avi_read_close(AVFormatContext *s)
         AVStream *st = s->streams[i];
         AVIStream *ast = st->priv_data;
         av_free(ast);
-        av_free(st->codec->extradata);
         av_free(st->codec->palctrl);
     }
 
diff --git a/libavformat/matroska.c b/libavformat/matroska.c
index b7e3a711e3c..9a1a69bc5a0 100644
--- a/libavformat/matroska.c
+++ b/libavformat/matroska.c
@@ -2630,10 +2630,6 @@ matroska_read_close (AVFormatContext *s)
         av_free(track);
     }
 
-    for (n = 0; n < s->nb_streams; n++) {
-        av_free(s->streams[n]->codec->extradata);
-    }
-
     memset(matroska, 0, sizeof(MatroskaDemuxContext));
 
     return 0;
diff --git a/libavformat/nsvdec.c b/libavformat/nsvdec.c
index 162f4d1210a..32afbc41142 100644
--- a/libavformat/nsvdec.c
+++ b/libavformat/nsvdec.c
@@ -705,7 +705,6 @@ static int nsv_read_close(AVFormatContext *s)
             av_free(ast->index_entries);
             av_free(ast);
         }
-        av_free(st->codec->extradata);
         av_free(st->codec->palctrl);
     }
 
diff --git a/libavformat/nut.c b/libavformat/nut.c
index 9c12e76f175..616eba1eec7 100644
--- a/libavformat/nut.c
+++ b/libavformat/nut.c
@@ -1415,9 +1415,6 @@ static int nut_read_close(AVFormatContext *s)
     NUTContext *nut = s->priv_data;
     int i;
 
-    for(i=0;i<s->nb_streams;i++) {
-        av_freep(&s->streams[i]->codec->extradata);
-    }
     av_freep(&nut->stream);
 
     return 0;
diff --git a/libavformat/ogg.c b/libavformat/ogg.c
index db7ed68c034..37158981ae5 100644
--- a/libavformat/ogg.c
+++ b/libavformat/ogg.c
@@ -249,7 +249,6 @@ static int ogg_read_close(AVFormatContext *avfcontext) {
 
     ogg_stream_clear(&context->os) ;
     ogg_sync_clear(&context->oy) ;
-    av_freep(&avfcontext->streams[0]->codec.extradata);
 
     return 0 ;
 }
diff --git a/libavformat/ogg2.c b/libavformat/ogg2.c
index ce1bcbae6a9..7ce13c4f99b 100644
--- a/libavformat/ogg2.c
+++ b/libavformat/ogg2.c
@@ -542,7 +542,6 @@ ogg_read_close (AVFormatContext * s)
     for (i = 0; i < ogg->nstreams; i++){
         av_free (ogg->streams[i].buf);
         av_free (ogg->streams[i].private);
-        av_freep (&s->streams[i]->codec->extradata);
     }
     av_free (ogg->streams);
     return 0;
diff --git a/libavformat/smacker.c b/libavformat/smacker.c
index 218ae38a760..0c900dc6399 100644
--- a/libavformat/smacker.c
+++ b/libavformat/smacker.c
@@ -329,11 +329,6 @@ static int smacker_read_close(AVFormatContext *s)
     if(smk->frm_flags)
         av_free(smk->frm_flags);
 
-    for(i=0;i<s->nb_streams;i++) {
-        AVStream *st = s->streams[i];
-        if(st->codec->extradata)
-            av_free(st->codec->extradata);
-    }
     return 0;
 }
 
diff --git a/libavformat/utils.c b/libavformat/utils.c
index d135015d3ae..f011bc2d650 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2167,6 +2167,7 @@ void av_close_input_file(AVFormatContext *s)
             av_parser_close(st->parser);
         }
         av_free(st->index_entries);
+        av_free(st->codec->extradata);
         av_free(st->codec);
         av_free(st);
     }
-- 
GitLab