Enable crashlogs for emergency or missing NewGRF savegames, in dev mode.

Factor out common checks for emergency and missing NewGRFs.
This commit is contained in:
Jonathan G Rennison
2017-06-22 19:30:37 +01:00
parent 349ddd90b7
commit 3271d69bda
5 changed files with 37 additions and 31 deletions

View File

@@ -226,16 +226,10 @@ void CDECL HandleCrash(int signum)
signal(*i, SIG_DFL);
}
if (GamelogTestEmergency()) {
const char *abort_reason = CrashLog::GetAbortCrashlogReason();
if (abort_reason != NULL) {
ShowMacDialog("A serious fault condition occurred in the game. The game will shut down.",
"As you loaded an emergency savegame no crash information will be generated.\n",
"Quit");
abort();
}
if (SaveloadCrashWithMissingNewGRFs()) {
ShowMacDialog("A serious fault condition occurred in the game. The game will shut down.",
"As you loaded an savegame for which you do not have the required NewGRFs no crash information will be generated.\n",
abort_reason,
"Quit");
abort();
}

View File

@@ -565,16 +565,10 @@ static void CDECL HandleCrash(int signum)
signal(*i, SIG_DFL);
}
if (GamelogTestEmergency()) {
const char *abort_reason = CrashLog::GetAbortCrashlogReason();
if (abort_reason != NULL) {
printf("A serious fault condition occurred in the game. The game will shut down.\n");
printf("As you loaded an emergency savegame no crash information will be generated.\n");
abort();
}
if (SaveloadCrashWithMissingNewGRFs()) {
printf("A serious fault condition occurred in the game. The game will shut down.\n");
printf("As you loaded an savegame for which you do not have the required NewGRFs\n");
printf("no crash information will be generated.\n");
printf(abort_reason);
abort();
}

View File

@@ -540,23 +540,15 @@ static LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS *ep)
ExitProcess(2);
}
if (GamelogTestEmergency()) {
static const TCHAR _emergency_crash[] =
_T("A serious fault condition occurred in the game. The game will shut down.\n")
_T("As you loaded an emergency savegame no crash information will be generated.\n");
const char *abort_reason = CrashLog::GetAbortCrashlogReason();
if (abort_reason != NULL) {
TCHAR _emergency_crash[512];
_sntprintf(_emergency_crash, lengthof(_emergency_crash),
_T("A serious fault condition occurred in the game. The game will shut down.\n"), OTTD2FS(abort_reason));
MessageBox(NULL, _emergency_crash, _T("Fatal Application Failure"), MB_ICONERROR);
ExitProcess(3);
}
if (SaveloadCrashWithMissingNewGRFs()) {
static const TCHAR _saveload_crash[] =
_T("A serious fault condition occurred in the game. The game will shut down.\n")
_T("As you loaded an savegame for which you do not have the required NewGRFs\n")
_T("no crash information will be generated.\n");
MessageBox(NULL, _saveload_crash, _T("Fatal Application Failure"), MB_ICONERROR);
ExitProcess(3);
}
CrashLogWindows *log = new CrashLogWindows(ep);
CrashLogWindows::current = log;
char *buf = log->FillCrashLog(log->crashlog, lastof(log->crashlog));