diff options
author | alberth <alberth@openttd.org> | 2010-09-22 20:59:24 +0000 |
---|---|---|
committer | alberth <alberth@openttd.org> | 2010-09-22 20:59:24 +0000 |
commit | b3270caaf1dbbb72e28eb36d74f039ca3c5227f6 (patch) | |
tree | 230200ecbcb024d35f25fc543762e8edc79977f4 /src/core | |
parent | ce83378e3de622b0759fad938b74ca83cea56949 (diff) | |
download | openttd-b3270caaf1dbbb72e28eb36d74f039ca3c5227f6.tar.xz |
(svn r20838) -Fix [FS#4136]: Cast '1' in bitmath functions to width of result before shifting.
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/bitmath_func.hpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/core/bitmath_func.hpp b/src/core/bitmath_func.hpp index 16812c134..a881ee81d 100644 --- a/src/core/bitmath_func.hpp +++ b/src/core/bitmath_func.hpp @@ -31,7 +31,7 @@ template <typename T> static FORCEINLINE uint GB(const T x, const uint8 s, const uint8 n) { - return (x >> s) & ((1U << n) - 1); + return (x >> s) & (((T)1U << n) - 1); } /** @@ -55,7 +55,7 @@ static FORCEINLINE uint GB(const T x, const uint8 s, const uint8 n) template <typename T, typename U> static FORCEINLINE T SB(T &x, const uint8 s, const uint8 n, const U d) { - x &= (T)(~(((1U << n) - 1) << s)); + x &= (T)(~((((T)1U << n) - 1) << s)); x |= (T)(d << s); return x; } @@ -78,7 +78,7 @@ static FORCEINLINE T SB(T &x, const uint8 s, const uint8 n, const U d) template <typename T, typename U> static FORCEINLINE T AB(T &x, const uint8 s, const uint8 n, const U i) { - const T mask = (T)(((1U << n) - 1) << s); + const T mask = ((((T)1U << n) - 1) << s); x = (T)((x & ~mask) | ((x + (i << s)) & mask)); return x; } @@ -114,7 +114,7 @@ static FORCEINLINE bool HasBit(const T x, const uint8 y) template <typename T> static FORCEINLINE T SetBit(T &x, const uint8 y) { - return x = (T)(x | (T)(1U << y)); + return x = (T)(x | ((T)1U << y)); } /** @@ -172,7 +172,7 @@ static FORCEINLINE T ClrBit(T &x, const uint8 y) template <typename T> static FORCEINLINE T ToggleBit(T &x, const uint8 y) { - return x = (T)(x ^ (T)(1U << y)); + return x = (T)(x ^ ((T)1U << y)); } |