On Sun, 3 May 2020, Philippe Mathieu-Daudé wrote:
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.;
Maybe writing it as 2.0 is easier to read and looks nicer.
Regards,
BALATON Zoltan