mirror of https://git.ffmpeg.org/ffmpeg.git
avformat/matroskadec: address some more missing AVPacket frees
Fixes memleaks. Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
2f27370111
commit
4f55b94663
|
@ -2913,13 +2913,10 @@ static int matroska_parse_rm_audio(MatroskaDemuxContext *matroska,
|
|||
|
||||
while (track->audio.pkt_cnt) {
|
||||
int ret;
|
||||
AVPacket *pkt = av_mallocz(sizeof(AVPacket));
|
||||
if (!pkt)
|
||||
return AVERROR(ENOMEM);
|
||||
AVPacket pktl, *pkt = &pktl;
|
||||
|
||||
ret = av_new_packet(pkt, a);
|
||||
if (ret < 0) {
|
||||
av_free(pkt);
|
||||
return ret;
|
||||
}
|
||||
memcpy(pkt->data,
|
||||
|
@ -2931,7 +2928,7 @@ static int matroska_parse_rm_audio(MatroskaDemuxContext *matroska,
|
|||
pkt->stream_index = st->index;
|
||||
ret = ff_packet_list_put(&matroska->queue, &matroska->queue_end, pkt, 0);
|
||||
if (ret < 0) {
|
||||
av_packet_free(&pkt);
|
||||
av_packet_unref(pkt);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
}
|
||||
|
@ -3028,7 +3025,7 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
|
|||
uint64_t duration,
|
||||
int64_t pos)
|
||||
{
|
||||
AVPacket *pkt;
|
||||
AVPacket pktl, *pkt = &pktl;
|
||||
uint8_t *id, *settings, *text, *buf;
|
||||
int id_len, settings_len, text_len;
|
||||
uint8_t *p, *q;
|
||||
|
@ -3085,12 +3082,8 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
|
|||
if (text_len <= 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
pkt = av_mallocz(sizeof(*pkt));
|
||||
if (!pkt)
|
||||
return AVERROR(ENOMEM);
|
||||
err = av_new_packet(pkt, text_len);
|
||||
if (err < 0) {
|
||||
av_free(pkt);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -3102,7 +3095,6 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
|
|||
id_len);
|
||||
if (!buf) {
|
||||
av_packet_unref(pkt);
|
||||
av_free(pkt);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
memcpy(buf, id, id_len);
|
||||
|
@ -3114,7 +3106,6 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
|
|||
settings_len);
|
||||
if (!buf) {
|
||||
av_packet_unref(pkt);
|
||||
av_free(pkt);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
memcpy(buf, settings, settings_len);
|
||||
|
@ -3134,7 +3125,7 @@ static int matroska_parse_webvtt(MatroskaDemuxContext *matroska,
|
|||
|
||||
err = ff_packet_list_put(&matroska->queue, &matroska->queue_end, pkt, 0);
|
||||
if (err < 0) {
|
||||
av_packet_free(&pkt);
|
||||
av_packet_unref(pkt);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue