(svn r11390) -Fix r11387: AB() was wrong (spotted by Rafal Rzepecki, patch by skidd13)
authortruelight
Wed, 07 Nov 2007 22:41:50 +0000
changeset 8336 a771088f1d1e
parent 8335 9ebc441dddde
child 8337 fd294edef5be
(svn r11390) -Fix r11387: AB() was wrong (spotted by Rafal Rzepecki, patch by skidd13)
src/macros.h
--- a/src/macros.h	Wed Nov 07 21:35:33 2007 +0000
+++ b/src/macros.h	Wed Nov 07 22:41:50 2007 +0000
@@ -66,9 +66,8 @@
  */
 template<typename T, typename U> static inline T AB(T& x, const uint8 s, const uint8 n, const U i)
 {
-	const T tmp = (T)(((1U << n) - 1) << s);
-	x &= ~tmp;
-	x |= (T)((x + (i << s)) & tmp);
+	const T mask = (T)(((1U << n) - 1) << s);
+	x = (T)((x & ~mask) | ((x + (i << s)) & mask));
 	return x;
 }