Allow to disable crash catcher on Windows

post_malone
elsid 3 years ago
parent ebdcb7acbd
commit d2ed62ec3a
No known key found for this signature in database
GPG Key ID: 4DE04C198CBA7625

@ -560,9 +560,6 @@ static bool is_debugger_present()
void crashCatcherInstall(int argc, char **argv, const std::string &crashLogPath) void crashCatcherInstall(int argc, char **argv, const std::string &crashLogPath)
{ {
if (const auto env = std::getenv("OPENMW_DISABLE_CRASH_CATCHER"))
if (std::atol(env) != 0)
return;
if ((argc == 2 && strcmp(argv[1], crash_switch) == 0) || !is_debugger_present()) if ((argc == 2 && strcmp(argv[1], crash_switch) == 0) || !is_debugger_present())
{ {
int s[5] = { SIGSEGV, SIGILL, SIGFPE, SIGBUS, SIGABRT }; int s[5] = { SIGSEGV, SIGILL, SIGFPE, SIGBUS, SIGABRT };

@ -314,16 +314,21 @@ int wrapApplication(int (*innerApplication)(int argc, char *argv[]), int argc, c
setupLogging(cfgMgr.getLogPath().string(), appName, mode); setupLogging(cfgMgr.getLogPath().string(), appName, mode);
} }
if (const auto env = std::getenv("OPENMW_DISABLE_CRASH_CATCHER"); env == nullptr || std::atol(env) == 0)
{
#if defined(_WIN32) #if defined(_WIN32)
const std::string crashLogName = Misc::StringUtils::lowerCase(appName) + "-crash.dmp"; const std::string crashLogName = Misc::StringUtils::lowerCase(appName) + "-crash.dmp";
Crash::CrashCatcher crashy(argc, argv, (cfgMgr.getLogPath() / crashLogName).make_preferred().string()); Crash::CrashCatcher crashy(argc, argv, (cfgMgr.getLogPath() / crashLogName).make_preferred().string());
#else #else
const std::string crashLogName = Misc::StringUtils::lowerCase(appName) + "-crash.log"; const std::string crashLogName = Misc::StringUtils::lowerCase(appName) + "-crash.log";
// install the crash handler as soon as possible. note that the log path // install the crash handler as soon as possible. note that the log path
// does not depend on config being read. // does not depend on config being read.
crashCatcherInstall(argc, argv, (cfgMgr.getLogPath() / crashLogName).string()); crashCatcherInstall(argc, argv, (cfgMgr.getLogPath() / crashLogName).string());
#endif #endif
ret = innerApplication(argc, argv); ret = innerApplication(argc, argv);
}
else
ret = innerApplication(argc, argv);
} }
catch (const std::exception& e) catch (const std::exception& e)
{ {

Loading…
Cancel
Save