From: Steinar H. Gunderson Date: Fri, 15 Jan 2016 22:27:00 +0000 (+0100) Subject: Fix an instance of undefined integer behavior. Found by the Clang static analyzer. X-Git-Tag: 1.0.0~9 X-Git-Url: https://git.sesse.net/?p=nageru;a=commitdiff_plain;h=6b38f75b24a40c8675c378aaed3792b4be784404 Fix an instance of undefined integer behavior. Found by the Clang static analyzer. --- diff --git a/h264encode.cpp b/h264encode.cpp index 02ada02..c7fdeac 100644 --- a/h264encode.cpp +++ b/h264encode.cpp @@ -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) {