diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 2ef32223ec..e957117207 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2328,10 +2328,15 @@ static int matroska_parse_rm_audio(MatroskaDemuxContext *matroska, } while (track->audio.pkt_cnt) { - AVPacket *pkt = NULL; - if (!(pkt = av_mallocz(sizeof(AVPacket))) || av_new_packet(pkt, a) < 0) { - av_free(pkt); + int ret; + AVPacket *pkt = av_mallocz(sizeof(AVPacket)); + if (!pkt) return AVERROR(ENOMEM); + + ret = av_new_packet(pkt, a); + if (ret < 0) { + av_free(pkt); + return ret; } memcpy(pkt->data, track->audio.buf + a * (h * w / a - track->audio.pkt_cnt--),