diff options
author | Michael Stahl <mstahl@redhat.com> | 2017-01-27 17:50:30 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2017-01-27 17:52:53 +0100 |
commit | 2fc5a65a1808ce4304ea55f06c4587a2459b5d52 (patch) | |
tree | a26a23dba13d86a269bad11704e11b53763c5ae3 /sal/osl | |
parent | 71511385dd6b12c3a902424652087e780fd7f3ba (diff) |
sal: add SAL_NO_ASSERT_DIALOGS variable to redirect...
... the dialogs that pop up on assert() and abort() to stderr, which
should work better in CI builds.
Change-Id: I80ec95bae6cc21b8ac27f68ca93aa6c6cce707f4
Diffstat (limited to 'sal/osl')
-rw-r--r-- | sal/osl/w32/dllentry.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/sal/osl/w32/dllentry.c b/sal/osl/w32/dllentry.c index 355c6b8202f2..d336e70810c1 100644 --- a/sal/osl/w32/dllentry.c +++ b/sal/osl/w32/dllentry.c @@ -23,6 +23,9 @@ #include <windows.h> #ifdef _MSC_VER #pragma warning(pop) +#ifdef _DEBUG +#include <crtdbg.h> +#endif #endif #include <tlhelp32.h> #include <systools/win32/uwinapi.h> @@ -148,6 +151,21 @@ static BOOL WINAPI RawDllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvRe { case DLL_PROCESS_ATTACH: { +#ifdef _DEBUG + WCHAR buf[64]; + DWORD const res = GetEnvironmentVariableW(L"SAL_NO_ASSERT_DIALOGS", buf, sizeof(buf)); + if (res && res < sizeof(buf)) + { + // disable the dialog on abort() + _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); + _CrtSetReportMode(_CRT_ERROR, (_CRTDBG_MODE_DEBUG|_CRTDBG_MODE_FILE)); + // not sure which assertions this affects + _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR); + _CrtSetReportMode(_CRT_ASSERT, (_CRTDBG_MODE_DEBUG|_CRTDBG_MODE_FILE)); + // disable the dialog on assert(false) + _set_error_mode(_OUT_TO_STDERR); + } +#endif #endif #if OSL_DEBUG_LEVEL < 2 |