Fixes leaks when the trailer is never written. Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> --- libavformat/asfenc.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/libavformat/asfenc.c b/libavformat/asfenc.c index 8e9b7ffc28..e4d74c80cb 100644 --- a/libavformat/asfenc.c +++ b/libavformat/asfenc.c @@ -765,8 +765,6 @@ static int asf_write_header(AVFormatContext *s) * data_size - asf->data_offset at the moment this function is done. * It is needed to use asf as a streamable format. */ if (asf_write_header1(s, 0, DATA_HEADER_SIZE) < 0) { - //av_free(asf); - av_freep(&asf->index_ptr); return -1; } @@ -1110,10 +1108,16 @@ static int asf_write_trailer(AVFormatContext *s) asf_write_header1(s, file_size, data_size - asf->data_offset); } - av_freep(&asf->index_ptr); return 0; } +static void asf_deinit(AVFormatContext *s) +{ + ASFContext *const asf = s->priv_data; + + av_freep(&asf->index_ptr); +} + static const AVOption asf_options[] = { { "packet_size", "Packet size", offsetof(ASFContext, packet_size), AV_OPT_TYPE_INT, {.i64 = 3200}, PACKET_SIZE_MIN, PACKET_SIZE_MAX, AV_OPT_FLAG_ENCODING_PARAM }, { NULL }, @@ -1141,6 +1145,7 @@ const AVOutputFormat ff_asf_muxer = { .flags = AVFMT_GLOBALHEADER, .codec_tag = asf_codec_tags, .priv_class = &asf_muxer_class, + .deinit = asf_deinit, }; #endif /* CONFIG_ASF_MUXER */ @@ -1159,5 +1164,6 @@ const AVOutputFormat ff_asf_stream_muxer = { .flags = AVFMT_GLOBALHEADER, .codec_tag = asf_codec_tags, .priv_class = &asf_muxer_class, + .deinit = asf_deinit, }; #endif /* CONFIG_ASF_STREAM_MUXER */ -- 2.30.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".