cxong / cdogs-sdl

Classic overhead run-and-gun game
https://cxong.github.io/cdogs-sdl/
GNU General Public License v2.0
895 stars 115 forks source link

Build errors: Implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 #722

Closed rootkea closed 2 years ago

rootkea commented 2 years ago

Hello!

On latest master with clang 12.0.0-3ubuntu1~21.04.2

...
src/cdogs/actor_fire.c:106:25: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 [-Werror,-Wimplicit-const-int-float-conversion]
                        const float recoil = RAND_FLOAT(-0.5f, 0.5f) * wc->u.Normal.Recoil;
                                             ^~~~~~~~~~~~~~~~~~~~~~~
src/cdogs/utils.h:211:29: note: expanded from macro 'RAND_FLOAT'
        ((_low) + ((float)rand() / RAND_MAX * ((_high) - (_low))))
                                 ~ ^~~~~~~~
/usr/include/stdlib.h:86:18: note: expanded from macro 'RAND_MAX'
#define RAND_MAX        2147483647
                        ^~~~~~~~~~
1 error generated.
...
src/cdogs/actors.c:619:43: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 [-Werror,-Wimplicit-const-int-float-conversion]
                ap.Vel = svec2(RAND_FLOAT(-0.2f, 0.2f), RAND_FLOAT(-0.2f, 0.2f));
                                                        ^~~~~~~~~~~~~~~~~~~~~~~
src/cdogs/utils.h:211:29: note: expanded from macro 'RAND_FLOAT'
        ((_low) + ((float)rand() / RAND_MAX * ((_high) - (_low))))
                                 ~ ^~~~~~~~
/usr/include/stdlib.h:86:18: note: expanded from macro 'RAND_MAX'
#define RAND_MAX        2147483647
                        ^~~~~~~~~~
src/cdogs/actors.c:619:18: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 [-Werror,-Wimplicit-const-int-float-conversion]
                ap.Vel = svec2(RAND_FLOAT(-0.2f, 0.2f), RAND_FLOAT(-0.2f, 0.2f));
                               ^~~~~~~~~~~~~~~~~~~~~~~
src/cdogs/utils.h:211:29: note: expanded from macro 'RAND_FLOAT'
        ((_low) + ((float)rand() / RAND_MAX * ((_high) - (_low))))
                                 ~ ^~~~~~~~
/usr/include/stdlib.h:86:18: note: expanded from macro 'RAND_MAX'
#define RAND_MAX        2147483647
                        ^~~~~~~~~~
src/cdogs/actors.c:1862:47: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 [-Werror,-Wimplicit-const-int-float-conversion]
                        svec2_add(a->Pos, svec2(RAND_FLOAT(-3, 3), RAND_FLOAT(-3, 3)));
                                                                   ^~~~~~~~~~~~~~~~~
src/cdogs/utils.h:211:29: note: expanded from macro 'RAND_FLOAT'
        ((_low) + ((float)rand() / RAND_MAX * ((_high) - (_low))))
                                 ~ ^~~~~~~~
/usr/include/stdlib.h:86:18: note: expanded from macro 'RAND_MAX'
#define RAND_MAX        2147483647
                        ^~~~~~~~~~
src/cdogs/actors.c:1862:28: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 [-Werror,-Wimplicit-const-int-float-conversion]
                        svec2_add(a->Pos, svec2(RAND_FLOAT(-3, 3), RAND_FLOAT(-3, 3)));
                                                ^~~~~~~~~~~~~~~~~
src/cdogs/utils.h:211:29: note: expanded from macro 'RAND_FLOAT'
        ((_low) + ((float)rand() / RAND_MAX * ((_high) - (_low))))
                                 ~ ^~~~~~~~
/usr/include/stdlib.h:86:18: note: expanded from macro 'RAND_MAX'
#define RAND_MAX        2147483647
                        ^~~~~~~~~~
src/cdogs/actors.c:1998:38: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 [-Werror,-Wimplicit-const-int-float-conversion]
                        svec2_scale(hitVNorm, speedBase * RAND_FLOAT(0.5f, 1));
                                                          ^~~~~~~~~~~~~~~~~~~
src/cdogs/utils.h:211:29: note: expanded from macro 'RAND_FLOAT'
        ((_low) + ((float)rand() / RAND_MAX * ((_high) - (_low))))
                                 ~ ^~~~~~~~
/usr/include/stdlib.h:86:18: note: expanded from macro 'RAND_MAX'
#define RAND_MAX        2147483647
                        ^~~~~~~~~~
5 errors generated.
...

Thanks!

rootkea commented 2 years ago

This has broken the build with clang.