diff --git a/libavcodec/flacdec.c b/libavcodec/flacdec.c
index d1beb4e15ec3a314c3dfe3bb3c2eff5510dd1795..af81115ff811da964801b724ea1924813e14bbc1 100644
--- a/libavcodec/flacdec.c
+++ b/libavcodec/flacdec.c
@@ -452,7 +452,7 @@ static inline int decode_subframe(FLACContext *s, int channel)
     if (wasted) {
         int i;
         for (i = 0; i < s->blocksize; i++)
-            decoded[i] <<= wasted;
+            decoded[i] = (unsigned)decoded[i] << wasted;
     }
 
     return 0;