From 527b46ba26124e51526d643c5e0f41c8160f286c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reimar=20D=C3=B6ffinger?= Date: Sun, 25 Jul 2010 07:52:58 +0000 Subject: [PATCH] ffmdec: Do not manually free streams on read_header error, this is always handled by upper layers. Fixes double-frees (issue 2003). Instead call ffm_close to ensure rc_eqs are freed also in the error case. Originally committed as revision 24490 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/ffmdec.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/libavformat/ffmdec.c b/libavformat/ffmdec.c index b2a4bc20fb..33301e677e 100644 --- a/libavformat/ffmdec.c +++ b/libavformat/ffmdec.c @@ -252,6 +252,8 @@ static void adjust_write_index(AVFormatContext *s) } +static int ffm_close(AVFormatContext *s); + static int ffm_read_header(AVFormatContext *s, AVFormatParameters *ap) { FFMContext *ffm = s->priv_data; @@ -381,12 +383,7 @@ static int ffm_read_header(AVFormatContext *s, AVFormatParameters *ap) ffm->first_packet = 1; return 0; fail: - for(i=0;inb_streams;i++) { - st = s->streams[i]; - if (st) { - av_free(st); - } - } + ffm_close(s); return -1; }