]> git.sesse.net Git - nageru/commitdiff
Fix an instance of undefined integer behavior. Found by the Clang static analyzer.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Fri, 15 Jan 2016 22:27:00 +0000 (23:27 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Fri, 15 Jan 2016 22:27:00 +0000 (23:27 +0100)
h264encode.cpp

index 02ada023b182879a0f0bf3fea15d3302dcad541b..c7fdeac58d30f4d78c986e78e355ed10086cfce1 100644 (file)
@@ -293,7 +293,11 @@ bitstream_put_ui(bitstream *bs, unsigned int val, int size_in_bits)
         bs->buffer[pos] = (bs->buffer[pos] << size_in_bits | val);
     } else {
         size_in_bits -= bit_left;
-        bs->buffer[pos] = (bs->buffer[pos] << bit_left) | (val >> size_in_bits);
+        if (bit_left >= 32) {
+            bs->buffer[pos] = (val >> size_in_bits);
+        } else {
+            bs->buffer[pos] = (bs->buffer[pos] << bit_left) | (val >> size_in_bits);
+        }
         bs->buffer[pos] = va_swap32(bs->buffer[pos]);
 
         if (pos + 1 == bs->max_size_in_dword) {