vc1dec: prevent memory leak on av_realloc error

This commit is contained in:
Janne Grunau 2012-10-09 16:07:12 +02:00
parent 1afd7a118f
commit 714f5ab597

View File

@ -5364,9 +5364,10 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data,
break; break;
case VC1_CODE_FIELD: { case VC1_CODE_FIELD: {
int buf_size3; int buf_size3;
slices = av_realloc(slices, sizeof(*slices) * (n_slices+1)); tmp = av_realloc(slices, sizeof(*slices) * (n_slices+1));
if (!slices) if (!tmp)
goto err; goto err;
slices = tmp;
slices[n_slices].buf = av_mallocz(buf_size + FF_INPUT_BUFFER_PADDING_SIZE); slices[n_slices].buf = av_mallocz(buf_size + FF_INPUT_BUFFER_PADDING_SIZE);
if (!slices[n_slices].buf) if (!slices[n_slices].buf)
goto err; goto err;
@ -5388,9 +5389,10 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data,
break; break;
case VC1_CODE_SLICE: { case VC1_CODE_SLICE: {
int buf_size3; int buf_size3;
slices = av_realloc(slices, sizeof(*slices) * (n_slices+1)); tmp = av_realloc(slices, sizeof(*slices) * (n_slices+1));
if (!slices) if (!tmp)
goto err; goto err;
slices = tmp;
slices[n_slices].buf = av_mallocz(buf_size + FF_INPUT_BUFFER_PADDING_SIZE); slices[n_slices].buf = av_mallocz(buf_size + FF_INPUT_BUFFER_PADDING_SIZE);
if (!slices[n_slices].buf) if (!slices[n_slices].buf)
goto err; goto err;