From c8fd93d35628545a22189f07c39e4cb821ddc1c2 Mon Sep 17 00:00:00 2001 From: Pere001 <68083904+Pere001@users.noreply.github.com> Date: Tue, 15 Nov 2022 12:29:19 +0100 Subject: [PATCH] Warning on GetRandomValue range limit (#2800) Added a comment explaining the range limitations of GetRandomValue. Added a run-time warning TRACELOG when GetRandomValue is called with an invalid range. --- src/rcore.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/rcore.c b/src/rcore.c index 54feb38b3..3fec0d42c 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -2816,6 +2816,13 @@ int GetRandomValue(int min, int max) max = min; min = tmp; } + + // WARNING: Ranges higher than RAND_MAX will return invalid results. More specifically, if (max - min) > INT_MAX there will + // be an overflow, and otherwise if (max - min) > RAND_MAX the random value will incorrectly never exceed a certain threshold. + if ((unsigned int)(max - min) > (unsigned int)RAND_MAX) + { + TRACELOG(LOG_WARNING, "Invalid GetRandomValue arguments. Range should not be higher than %i.", RAND_MAX); + } return (rand()%(abs(max - min) + 1) + min); }