avcodec/audiotoolboxdec: always use a copy of the AVCodecContext extradata

Fixes memleaks introduced by 954e2b3d34

Signed-off-by: James Almer <jamrial@gmail.com>
pull/269/head
James Almer 8 years ago
parent eea69a9f25
commit 7273e234de
  1. 10
      libavcodec/audiotoolboxdec.c

@ -399,8 +399,13 @@ static av_cold int ffat_create_decoder(AVCodecContext *avctx, AVPacket *pkt)
static av_cold int ffat_init_decoder(AVCodecContext *avctx)
{
ATDecodeContext *at = avctx->priv_data;
at->extradata = avctx->extradata;
at->extradata_size = avctx->extradata_size;
if (avctx->extradata_size) {
at->extradata = av_mallocz(avctx->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE);
if (!at->extradata)
return AVERROR(ENOMEM);
at->extradata_size = avctx->extradata_size;
memcpy(at->extradata, avctx->extradata, avctx->extradata_size);
}
if ((avctx->channels && avctx->sample_rate) || ffat_usable_extradata(avctx))
return ffat_create_decoder(avctx, NULL);
@ -599,6 +604,7 @@ static av_cold int ffat_close_decoder(AVCodecContext *avctx)
av_packet_unref(&at->new_in_pkt);
av_packet_unref(&at->in_pkt);
av_free(at->decoded_data);
av_free(at->extradata);
return 0;
}

Loading…
Cancel
Save