@@ -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,
};
by setting the FF_INPUTFORMAT_HEADER_CLEANUP flag. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> --- libavformat/icodec.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-)