When building with Clang 10 on Fedora 32, we get: CC audio/mixeng.o audio/mixeng.c:274:34: error: implicit conversion from 'unsigned int' to 'float' changes value from 4294967295 to 4294967296 [-Werror,-Wimplicit-int-float-conversion] static const float float_scale = UINT_MAX / 2.f; ^~~~~~~~ ~ /usr/lib64/clang/10.0.0/include/limits.h:56:37: note: expanded from macro 'UINT_MAX' #define UINT_MAX (__INT_MAX__ *2U +1U) ~~~~~~~~~~~~~~~~~^~~
Fix by using a 64-bit float for the conversion, before casting back to 32-bit float. Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> --- audio/mixeng.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/audio/mixeng.c b/audio/mixeng.c index 739a500449..9946bfeaec 100644 --- a/audio/mixeng.c +++ b/audio/mixeng.c @@ -271,7 +271,7 @@ f_sample *mixeng_clip[2][2][2][3] = { #define CONV_NATURAL_FLOAT(x) (x) #define CLIP_NATURAL_FLOAT(x) (x) #else -static const float float_scale = UINT_MAX / 2.f; +static const float float_scale = UINT_MAX / 2.; #define CONV_NATURAL_FLOAT(x) ((x) * float_scale) #ifdef RECIPROCAL -- 2.21.3