diff --git a/media/ffvpx/libavcodec/flacdec.c b/media/ffvpx/libavcodec/flacdec.c index 0c88f577a1..e6e6487470 100644 --- a/media/ffvpx/libavcodec/flacdec.c +++ b/media/ffvpx/libavcodec/flacdec.c @@ -148,8 +148,10 @@ return buf_size; av_fast_malloc(&s->decoded_buffer, &s->decoded_buffer_size, buf_size); - if (!s->decoded_buffer) + if (!s->decoded_buffer) { + memset(s->decoded, 0, sizeof(s->decoded)); return AVERROR(ENOMEM); + } ret = av_samples_fill_arrays((uint8_t **)s->decoded, NULL, s->decoded_buffer, @@ -164,8 +166,10 @@ return buf_size; av_fast_malloc(&s->decoded_buffer_33bps, &s->decoded_buffer_size_33bps, buf_size); - if (!s->decoded_buffer_33bps) + if (!s->decoded_buffer_33bps) { + s->decoded_33bps = NULL; return AVERROR(ENOMEM); + } ret = av_samples_fill_arrays((uint8_t **)&s->decoded_33bps, NULL, s->decoded_buffer_33bps, @@ -665,7 +669,7 @@ fi.samplerate = s->stream_info.samplerate; s->stream_info.samplerate = s->avctx->sample_rate = fi.samplerate; - if (!s->got_streaminfo) { + if (!s->got_streaminfo || !s->decoded_buffer) { ret = allocate_buffers(s); if (ret < 0) return ret;