diff options
author | James Almer <jamrial@gmail.com> | 2018-04-04 13:53:12 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2018-04-04 13:53:12 -0300 |
commit | 4f55b94663cf1eeb00ca23e0fe89766ad081f811 (patch) | |
tree | 7e6b7f7170c4a7148fee84e9b6f12091ac910530 /libavformat | |
parent | 2f273701119f5ec9534f4327f9f1471728518628 (diff) | |
download | ffmpeg-4f55b94663cf1eeb00ca23e0fe89766ad081f811.tar.gz |
avformat/matroskadec: address some more missing AVPacket frees
Fixes memleaks.
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/matroskadec.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index a616fb3241..6156c2f9b4 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -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); } |