[FFmpeg-devel] [PATCH 21/21] avformat/icodec: Simplify cleanup after read_header failure
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Sun Mar 22 05:47:56 EET 2020
by setting the FF_INPUTFORMAT_HEADER_CLEANUP flag.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
---
libavformat/icodec.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/libavformat/icodec.c b/libavformat/icodec.c
index b47fa98f80..9449bb7315 100644
--- a/libavformat/icodec.c
+++ b/libavformat/icodec.c
@@ -96,10 +96,8 @@ static int read_header(AVFormatContext *s)
break;
st = avformat_new_stream(s, NULL);
- if (!st) {
- av_freep(&ico->images);
+ if (!st)
return AVERROR(ENOMEM);
- }
st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
st->codecpar->width = avio_r8(pb);
@@ -113,7 +111,6 @@ static int read_header(AVFormatContext *s)
ico->images[i].size = avio_rl32(pb);
if (ico->images[i].size <= 0) {
av_log(s, AV_LOG_ERROR, "Invalid image size %d\n", ico->images[i].size);
- av_freep(&ico->images);
return AVERROR_INVALIDDATA;
}
ico->images[i].offset = avio_rl32(pb);
@@ -130,7 +127,6 @@ static int read_header(AVFormatContext *s)
break;
case 40:
if (ico->images[i].size < 40) {
- av_freep(&ico->images);
return AVERROR_INVALIDDATA;
}
st->codecpar->codec_id = AV_CODEC_ID_BMP;
@@ -143,7 +139,6 @@ static int read_header(AVFormatContext *s)
break;
default:
avpriv_request_sample(s, "codec %d", codec);
- av_freep(&ico->images);
return AVERROR_INVALIDDATA;
}
}
@@ -224,4 +219,5 @@ AVInputFormat ff_ico_demuxer = {
.read_packet = read_packet,
.read_close = ico_read_close,
.flags = AVFMT_NOTIMESTAMPS,
+ .flags_internal = FF_INPUTFORMAT_HEADER_CLEANUP,
};
--
2.20.1
More information about the ffmpeg-devel
mailing list