diff options
Diffstat (limited to 'libavcodec/8svx.c')
-rw-r--r-- | libavcodec/8svx.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/8svx.c b/libavcodec/8svx.c index a91f001531..f42a35b20b 100644 --- a/libavcodec/8svx.c +++ b/libavcodec/8svx.c @@ -110,7 +110,7 @@ static int eightsvx_decode_frame(AVCodecContext *avctx, void *data, /* decode and interleave the first packet */ if (!esc->samples && avpkt) { - uint8_t *deinterleaved_samples; + uint8_t *deinterleaved_samples, *p = NULL; esc->samples_size = avctx->codec->id == CODEC_ID_8SVX_RAW || avctx->codec->id ==CODEC_ID_PCM_S8_PLANAR? avpkt->size : avctx->channels + (avpkt->size-avctx->channels) * 2; @@ -129,6 +129,7 @@ static int eightsvx_decode_frame(AVCodecContext *avctx, void *data, } if (!(deinterleaved_samples = av_mallocz(n))) return AVERROR(ENOMEM); + p = deinterleaved_samples; /* the uncompressed starting value is contained in the first byte */ if (avctx->channels == 2) { @@ -145,6 +146,7 @@ static int eightsvx_decode_frame(AVCodecContext *avctx, void *data, interleave_stereo(esc->samples, deinterleaved_samples, esc->samples_size); else memcpy(esc->samples, deinterleaved_samples, esc->samples_size); + av_freep(&p); } /* get output buffer */ |