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];