Changeset - r16132:0ba842e17bf1
[Not reviewed]
master
0 1 0
alberth - 14 years ago 2010-09-22 20:59:24
alberth@openttd.org
(svn r20838) -Fix [FS#4136]: Cast '1' in bitmath functions to width of result before shifting.
1 file changed with 5 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/core/bitmath_func.hpp
Show inline comments
 
@@ -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, co
 
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 uint
 
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
 
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 
 
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));
 
}
 

	
 

	
0 comments (0 inline, 0 general)