Bug #1826 » 0044-savegame-Restore-sane-state-after-failures-in-savega.patch
| server/savegame/savegame2.c | ||
|---|---|---|
|
#include "report.h"
|
||
|
#include "ruleload.h"
|
||
|
#include "sanitycheck.h"
|
||
|
#include "savecompat.h"
|
||
|
#include "score.h"
|
||
|
#include "settings.h"
|
||
|
#include "spacerace.h"
|
||
| ... | ... | |
|
/* server/scripting */
|
||
|
#include "script_server.h"
|
||
|
/* server/savegame */
|
||
|
#include "savecompat.h"
|
||
|
#include "savemain.h"
|
||
|
/* ai */
|
||
|
#include "aitraits.h"
|
||
|
#include "difficulty.h"
|
||
| ... | ... | |
|
if (!sg_success) {
|
||
|
log_error("Failure loading savegame!");
|
||
|
/* Try to get the server back to a vaguely sane state */
|
||
|
server_game_free();
|
||
|
server_game_init(FALSE);
|
||
|
load_rulesets(NULL, NULL, FALSE, NULL, TRUE, FALSE, TRUE);
|
||
|
save_restore_sane_state();
|
||
|
}
|
||
|
}
|
||
| server/savegame/savegame3.c | ||
|---|---|---|
|
#include "report.h"
|
||
|
#include "ruleload.h"
|
||
|
#include "sanitycheck.h"
|
||
|
#include "savecompat.h"
|
||
|
#include "score.h"
|
||
|
#include "settings.h"
|
||
|
#include "spacerace.h"
|
||
| ... | ... | |
|
/* server/scripting */
|
||
|
#include "script_server.h"
|
||
|
/* server/savegame */
|
||
|
#include "savecompat.h"
|
||
|
#include "savemain.h"
|
||
|
/* ai */
|
||
|
#include "aitraits.h"
|
||
|
#include "difficulty.h"
|
||
| ... | ... | |
|
if (!sg_success) {
|
||
|
log_error("Failure loading savegame!");
|
||
|
/* Try to get the server back to a vaguely sane state */
|
||
|
server_game_free();
|
||
|
server_game_init(FALSE);
|
||
|
load_rulesets(NULL, NULL, FALSE, NULL, TRUE, FALSE, TRUE);
|
||
|
save_restore_sane_state();
|
||
|
}
|
||
|
}
|
||
| server/savegame/savemain.c | ||
|---|---|---|
|
#include "console.h"
|
||
|
#include "notify.h"
|
||
|
/* server/ruleset */
|
||
|
#include "ruleload.h"
|
||
|
/* server/savegame */
|
||
|
#include "savegame2.h"
|
||
|
#include "savegame3.h"
|
||
| ... | ... | |
|
if (savefile_options == nullptr) {
|
||
|
log_error("Missing savefile options. Can not load the savegame.");
|
||
|
save_restore_sane_state();
|
||
|
return;
|
||
|
}
|
||
| ... | ... | |
|
savegame2_load(sfile);
|
||
|
} else {
|
||
|
log_error("Too old savegame. Format not supported any more.");
|
||
|
save_restore_sane_state();
|
||
|
return;
|
||
|
}
|
||
| ... | ... | |
|
save_thread = nullptr;
|
||
|
}
|
||
|
}
|
||
|
/************************************************************************//**
|
||
|
Restore the server to sane state after savegame loading failure.
|
||
|
****************************************************************************/
|
||
|
void save_restore_sane_state(void)
|
||
|
{
|
||
|
/* Try to get the server back to a vaguely sane state */
|
||
|
server_game_free();
|
||
|
server_game_init(FALSE);
|
||
|
load_rulesets(NULL, NULL, FALSE, NULL, TRUE, FALSE, TRUE);
|
||
|
}
|
||
| server/savegame/savemain.h | ||
|---|---|---|
|
bool scenario);
|
||
|
void save_system_close(void);
|
||
|
void save_restore_sane_state(void);
|
||
|
#endif /* FC__SAVEMAIN_H */
|
||