fix undefined shift in countLeadingZeros (#1157)
diff --git a/MathExtras.h b/MathExtras.h
index db98a2f..2be6e08 100644
--- a/MathExtras.h
+++ b/MathExtras.h
@@ -425,14 +425,17 @@
/// valid arguments.
static inline unsigned int countLeadingZeros(int x)
{
- unsigned count = 0;
int i;
const unsigned bits = sizeof(x) * 8;
+ unsigned count = bits;
+ if (x < 0) {
+ return 0;
+ }
for (i = bits; --i; ) {
- if (x < 0) break;
- count++;
- x <<= 1;
+ if (x == 0) break;
+ count--;
+ x >>= 1;
}
return count;