From b6f0599bfd0a26c3c4c8a87eeff51eb8b35bea9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= Date: Wed, 21 Aug 2024 15:52:50 +0200 Subject: [PATCH] demux_mkv: fix av_parser_codec leak --- demux/demux_mkv.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index 9e9b2f1c08..d68ccf7c6c 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -2756,9 +2756,13 @@ static void mkv_parse_and_add_packet(demuxer_t *demuxer, mkv_track_t *track, if (track->parse && !track->av_parser) { int id = mp_codec_to_av_codec_id(track->stream->codec->codec); const AVCodec *codec = avcodec_find_decoder(id); - track->av_parser = av_parser_init(id); + assert(!track->av_parser_codec); if (codec) track->av_parser_codec = avcodec_alloc_context3(codec); + if (track->av_parser_codec) + track->av_parser = av_parser_init(id); + if (!track->av_parser) + avcodec_free_context(&track->av_parser_codec); } if (!track->parse || !track->av_parser || !track->av_parser_codec) {