Windows: Don't call abort, use RaiseException directly

This commit is contained in:
Jonathan G Rennison
2023-06-11 16:46:12 +01:00
parent cb6f6f94e6
commit cca7c0ef0a
5 changed files with 23 additions and 2 deletions

View File

@@ -123,6 +123,7 @@ extern Company *DoStartupNewCompany(bool is_ai, CompanyID company = INVALID_COMP
extern void OSOpenBrowser(const char *url); extern void OSOpenBrowser(const char *url);
extern void RebuildTownCaches(bool cargo_update_required, bool old_map_position); extern void RebuildTownCaches(bool cargo_update_required, bool old_map_position);
extern void ShowOSErrorBox(const char *buf, bool system); extern void ShowOSErrorBox(const char *buf, bool system);
extern void NORETURN DoOSAbort();
extern std::string _config_file; extern std::string _config_file;
bool _save_config = false; bool _save_config = false;
@@ -180,7 +181,7 @@ void CDECL error(const char *s, ...)
/* Set the error message for the crash log and then invoke it. */ /* Set the error message for the crash log and then invoke it. */
CrashLog::SetErrorMessage(buf); CrashLog::SetErrorMessage(buf);
abort(); DoOSAbort();
} }
void CDECL assert_msg_error(int line, const char *file, const char *expr, const char *extra, const char *str, ...) void CDECL assert_msg_error(int line, const char *file, const char *expr, const char *extra, const char *str, ...)
@@ -203,7 +204,7 @@ void CDECL assert_msg_error(int line, const char *file, const char *expr, const
/* Set the error message for the crash log and then invoke it. */ /* Set the error message for the crash log and then invoke it. */
CrashLog::SetErrorMessage(buf); CrashLog::SetErrorMessage(buf);
abort(); DoOSAbort();
} }
const char *assert_tile_info(uint32 tile) { const char *assert_tile_info(uint32 tile) {

View File

@@ -158,6 +158,11 @@ void ShowOSErrorBox(const char *buf, bool system)
} }
} }
void DoOSAbort()
{
abort();
}
void OSOpenBrowser(const char *url) void OSOpenBrowser(const char *url)
{ {
[ [ NSWorkspace sharedWorkspace ] openURL:[ NSURL URLWithString:[ NSString stringWithUTF8String:url ] ] ]; [ [ NSWorkspace sharedWorkspace ] openURL:[ NSURL URLWithString:[ NSString stringWithUTF8String:url ] ] ];

View File

@@ -170,6 +170,11 @@ void ShowOSErrorBox(const char *buf, bool system)
WinTerminate(hab); WinTerminate(hab);
} }
void DoOSAbort()
{
abort();
}
int CDECL main(int argc, char *argv[]) int CDECL main(int argc, char *argv[])
{ {
SetRandomSeed(time(nullptr)); SetRandomSeed(time(nullptr));

View File

@@ -233,6 +233,11 @@ void ShowOSErrorBox(const char *buf, bool system)
fprintf(stderr, "Error: %s\n", buf); fprintf(stderr, "Error: %s\n", buf);
} }
} }
void NORETURN DoOSAbort()
{
abort();
}
#endif #endif
#ifdef WITH_COCOA #ifdef WITH_COCOA

View File

@@ -86,6 +86,11 @@ void ShowOSErrorBox(const char *buf, bool system)
MessageBox(GetActiveWindow(), OTTD2FS(buf).c_str(), L"Error!", MB_ICONSTOP | MB_TASKMODAL); MessageBox(GetActiveWindow(), OTTD2FS(buf).c_str(), L"Error!", MB_ICONSTOP | MB_TASKMODAL);
} }
void NORETURN DoOSAbort()
{
RaiseException(0xE1212012, 0, 0, nullptr);
}
void OSOpenBrowser(const char *url) void OSOpenBrowser(const char *url)
{ {
ShellExecute(GetActiveWindow(), L"open", OTTD2FS(url).c_str(), nullptr, nullptr, SW_SHOWNORMAL); ShellExecute(GetActiveWindow(), L"open", OTTD2FS(url).c_str(), nullptr, nullptr, SW_SHOWNORMAL);