From fdafacc9d3bdd945e03adc870f2e5b71c1f75b7b Mon Sep 17 00:00:00 2001 From: yukichigai <45781909+yukichigai@users.noreply.github.com> Date: Mon, 22 Sep 2025 21:12:15 -0700 Subject: [PATCH 1/2] loadsave.c - cap number of vehicles saved Add a limit of 48 vehicles to save stolen status for, as writing more than this will corrupt the save file and cause errors when it is loaded. --- src/DETHRACE/common/loadsave.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DETHRACE/common/loadsave.c b/src/DETHRACE/common/loadsave.c index 815c4d88..03800b78 100644 --- a/src/DETHRACE/common/loadsave.c +++ b/src/DETHRACE/common/loadsave.c @@ -638,7 +638,7 @@ void MakeSavedGame(tSave_game** pSave_record) { for (i = 0; i < gNumber_of_races; i++) { (*pSave_record)->race_info[i].been_there_done_that = gRace_list[i].been_there_done_that; } - for (i = 0; i < gNumber_of_racers; i++) { + for (i = 0; i < gNumber_of_racers && i < 48; i++) { // Tracking more than 48 vehicles corrupts save files. This only matters in modded games that add more stealable vehicles (*pSave_record)->opponent_info[i].dead = gOpponents[i].dead; } (*pSave_record)->credits = gProgram_state.credits; From c565648b64696c5b45fc43983ba45d9bd3b90357 Mon Sep 17 00:00:00 2001 From: yukichigai <45781909+yukichigai@users.noreply.github.com> Date: Tue, 23 Sep 2025 16:29:56 -0700 Subject: [PATCH 2/2] Update src/DETHRACE/common/loadsave.c Co-authored-by: Anonymous Maarten --- src/DETHRACE/common/loadsave.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/DETHRACE/common/loadsave.c b/src/DETHRACE/common/loadsave.c index 03800b78..bc9d64f4 100644 --- a/src/DETHRACE/common/loadsave.c +++ b/src/DETHRACE/common/loadsave.c @@ -638,7 +638,15 @@ void MakeSavedGame(tSave_game** pSave_record) { for (i = 0; i < gNumber_of_races; i++) { (*pSave_record)->race_info[i].been_there_done_that = gRace_list[i].been_there_done_that; } - for (i = 0; i < gNumber_of_racers && i < 48; i++) { // Tracking more than 48 vehicles corrupts save files. This only matters in modded games that add more stealable vehicles +#ifdef DETHRACE_FIX_BUGS +// Tracking more than 48 vehicles corrupts save files. +// This only matters in modded games that add more stealable vehicles +#define VALID_SAVE_GAME_INDEX(SAVE_GAME, INDEX) ((INDEX) < gNumber_of_racers && (INDEX) < COUNT_OF((SAVE_GAME)->opponent_info)) +#else +#define VALID_SAVE_GAME_INDEX(SAVE_GAME, INDEX) ((INDEX) < gNumber_of_racers) +#endif + for (i = 0; VALID_SAVE_GAME_INDEX(*pSave_record, i); i++) { +#undef VALID_SAVE_GAME_INDEX (*pSave_record)->opponent_info[i].dead = gOpponents[i].dead; } (*pSave_record)->credits = gProgram_state.credits;