tests: avoid undefined signed overflow

This commit is contained in:
Anonymous Maarten
2024-12-28 19:06:59 +01:00
committed by Anonymous Maarten
parent 156b3b4a8c
commit efba42a67b
4 changed files with 52 additions and 48 deletions

View File

@@ -142,9 +142,13 @@ Sint32 SDLTest_RandomIntegerInRange(Sint32 min, Sint32 max)
max = temp;
}
Sint32 range = (max - min);
SDL_assert(range < SDL_MAX_SINT32);
return min + SDL_rand_r(&rndContext, range + 1);
Uint64 range = (Sint64)max - (Sint64)min;
if (range < SDL_MAX_SINT32) {
return min + (Sint32) SDL_rand_r(&rndContext, (Sint32) range + 1);
} else {
Uint64 add = SDL_rand_bits_r(&rndContext) | ((Uint64) SDL_rand_bits_r(&rndContext) << 32);
return (Sint32) (min + (Sint64) (add % (range + 1)));
}
}
/**