summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralberth <alberth@openttd.org>2010-09-22 20:59:24 +0000
committeralberth <alberth@openttd.org>2010-09-22 20:59:24 +0000
commitb3270caaf1dbbb72e28eb36d74f039ca3c5227f6 (patch)
tree230200ecbcb024d35f25fc543762e8edc79977f4
parentce83378e3de622b0759fad938b74ca83cea56949 (diff)
downloadopenttd-b3270caaf1dbbb72e28eb36d74f039ca3c5227f6.tar.xz
(svn r20838) -Fix [FS#4136]: Cast '1' in bitmath functions to width of result before shifting.
-rw-r--r--src/core/bitmath_func.hpp10
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));
}