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:
@@ -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
|
||||
|
Reference in New Issue
Block a user