bitmath.h: MSVS unsigned fix
authorErik de Castro Lopo <erikd@mega-nerd.com>
Sun, 15 Jan 2017 05:25:40 +0000 (16:25 +1100)
committerErik de Castro Lopo <erikd@mega-nerd.com>
Sun, 15 Jan 2017 05:28:16 +0000 (16:28 +1100)
The orignal code had `unsigned long` inside `#ifdef MSVC`. It was then changed
to `uint64_t` which was incorrect because on Windows `sizze long == 4`.
Change it now to `uint32_t` which is always correct regardless of OS, compiler
or architecture.

src/libFLAC/include/private/bitmath.h

index d9117b6..12a3fb9 100644 (file)
@@ -82,7 +82,7 @@ static inline uint32_t FLAC__clz_uint32(FLAC__uint32 v)
        return __builtin_clz(v);
 #elif defined(_MSC_VER)
        {
-               uint64_t idx;
+               uint32_t idx;
                _BitScanReverse(&idx, v);
                return idx ^ 31U;
        }
@@ -106,7 +106,7 @@ static inline uint32_t FLAC__clz_uint64(FLAC__uint64 v)
        return __builtin_clzll(v);
 #elif (defined(__INTEL_COMPILER) || defined(_MSC_VER)) && (defined(_M_IA64) || defined(_M_X64))
        {
-               uint64_t idx;
+               uint32_t idx;
                _BitScanReverse64(&idx, v);
                return idx ^ 63U;
        }
@@ -160,7 +160,7 @@ static inline uint32_t FLAC__bitmath_ilog2(FLAC__uint32 v)
        return _bit_scan_reverse(v);
 #elif defined(_MSC_VER)
        {
-               uint64_t idx;
+               uint32_t idx;
                _BitScanReverse(&idx, v);
                return idx;
        }
@@ -177,7 +177,7 @@ static inline uint32_t FLAC__bitmath_ilog2_wide(FLAC__uint64 v)
 /* Sorry, only supported in x64/Itanium.. and both have fast FPU which makes integer-only encoder pointless */
 #elif (defined(__INTEL_COMPILER) || defined(_MSC_VER)) && (defined(_M_IA64) || defined(_M_X64))
        {
-               uint64_t idx;
+               uint32_t idx;
                _BitScanReverse64(&idx, v);
                return idx;
        }