diff --git a/libavcodec/wmalosslessdec.c b/libavcodec/wmalosslessdec.c index 9f1e32866b71c86509d25b97f0ed2a7af4d1244d..95e8cf2ab75ad32d703b01122c35c0f32613c006 100644 --- a/libavcodec/wmalosslessdec.c +++ b/libavcodec/wmalosslessdec.c @@ -885,7 +885,7 @@ static void mclms_predict(WmallDecodeCtx *s, int icoef, int *pred) static void revert_mclms(WmallDecodeCtx *s, int tile_size) { - int icoef, pred[s->num_channels]; + int icoef, pred[WMALL_MAX_CHANNELS] = {0}; for (icoef = 0; icoef < tile_size; icoef++) { mclms_predict(s, icoef, pred); mclms_update(s, icoef, pred); @@ -1025,7 +1025,7 @@ static void revert_inter_ch_decorr(WmallDecodeCtx *s, int tile_size) int icoef; if (s->num_channels != 2) return; - else { + else if (s->is_channel_coded[0] && s->is_channel_coded[1]) { for (icoef = 0; icoef < tile_size; icoef++) { s->channel_residues[0][icoef] -= s->channel_residues[1][icoef] >> 1; s->channel_residues[1][icoef] += s->channel_residues[0][icoef];