Project

General

Profile

Bug #1953 ยป 0024-Make-sure-final-random-seed-or-map-seed-is-never-zer.patch

Marko Lindqvist, 02/25/2026 10:16 AM

View differences:

server/generator/mapgen.c
if (wld.map.server.seed_setting == 0) {
/* Create a "random" map seed. */
wld.map.server.seed = seed_rand & (MAX_UINT32 >> 1);
while (wld.map.server.seed == 0) {
/* This makes random state different, but we don't
* care as this is an extreme corner case anyway. */
seed_rand = fc_rand(MAX_UINT32);
wld.map.server.seed = seed_rand & (MAX_UINT32 >> 1);
}
#ifdef FREECIV_TESTMATIC
/* Log command to reproduce the mapseed */
log_testmatic("set mapseed %d", wld.map.server.seed);
server/srv_main.c
void init_game_seed(void)
{
if (game.server.seed_setting == 0) {
/* We strip the high bit for now because neither game file nor
server options can handle unsigned ints yet. - Cedric */
game.server.seed = generate_game_seed() & (MAX_UINT32 >> 1);
do {
/* We strip the high bit for now because neither game file nor
server options can handle unsigned ints yet. - Cedric */
game.server.seed = generate_game_seed() & (MAX_UINT32 >> 1);
} while (game.server.seed == 0);
#ifdef FREECIV_TESTMATIC
/* Log command to reproduce the gameseed */
log_testmatic("set gameseed %u", game.server.seed);
    (1-1/1)