pcm/FloatConvert: fix compile-time integer overflow for S32

The compile-time calculation for `factor` overflows because `1<<31`
cannot be represented by `int`.  By casting to `uintmax_t` first, we
can avoid this overflow.

Closes #380
This commit is contained in:
Max Kellermann
2018-10-29 22:47:53 +01:00
parent a3f7127e72
commit cc5fab28af
2 changed files with 2 additions and 1 deletions

View File

@@ -34,7 +34,7 @@ struct FloatToIntegerSampleConvert {
typedef typename SrcTraits::long_type SL;
typedef typename DstTraits::value_type DV;
static constexpr SV factor = 1 << (DstTraits::BITS - 1);
static constexpr SV factor = uintmax_t(1) << (DstTraits::BITS - 1);
static_assert(factor > 0, "Wrong factor");
gcc_const