Only call _set_abort_behavior with the ucrt.

This commit is contained in:
Charles Barto 2021-12-17 16:05:14 -08:00
parent 908ed3498b
commit 77df44371e
2 changed files with 15 additions and 13 deletions

View File

@ -37,8 +37,6 @@
#ifdef G_OS_WIN32 #ifdef G_OS_WIN32
#include <io.h> #include <io.h>
#include <windows.h> #include <windows.h>
#endif
#ifdef G_PLATFORM_WIN32
#include <crtdbg.h> #include <crtdbg.h>
#endif #endif
#include <errno.h> #include <errno.h>
@ -1600,20 +1598,24 @@ void
mutable_test_config_vars.test_undefined = FALSE; mutable_test_config_vars.test_undefined = FALSE;
#endif #endif
#ifdef G_PLATFORM_WIN32 #ifdef G_OS_WIN32
// don't open a window for errors (like the "abort() was called one") // don't open a window for errors (like the "abort() was called one")
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); _CrtSetReportMode (_CRT_ERROR, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); _CrtSetReportFile (_CRT_ERROR, _CRTDBG_FILE_STDERR);
// while gtest tests tend to use g_assert and friends // while gtest tests tend to use g_assert and friends
// if they do use the C standard assert macro we want to // if they do use the C standard assert macro we want to
// output a message to stderr, not open a popup window // output a message to stderr, not open a popup window
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); _CrtSetReportMode (_CRT_ASSERT, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR); _CrtSetReportFile (_CRT_ASSERT, _CRTDBG_FILE_STDERR);
// in release mode abort() will pop up a windows error // in release mode abort() will pop up a windows error
// reporting dialog, let's prevent that. // reporting dialog, let's prevent that. Only msvcrxx and
_set_abort_behavior(0, _CALL_REPORTFAULT); // the UCRT have this function, but there's no great way to
// detect msvcrxx (that I know of) so only call this when using
// the UCRT
#ifdef _UCRT
_set_abort_behavior (0, _CALL_REPORTFAULT);
#endif
#endif #endif
va_start (args, argv); va_start (args, argv);
while ((option = va_arg (args, char *))) while ((option = va_arg (args, char *)))

View File

@ -3160,12 +3160,12 @@ g_check_setuid (void)
void void
g_abort (void) g_abort (void)
{ {
/* One call to break the debugger /* One call to break the debugger
* We check if a debugger is actually attached to * We check if a debugger is actually attached to
* avoid a windows error reporting popup window * avoid a windows error reporting popup window
* when run in a test harness / on CI * when run in a test harness / on CI
*/ */
if(IsDebuggerPresent()) if (IsDebuggerPresent ())
DebugBreak (); DebugBreak ();
/* One call in case CRT changes its abort() behaviour */ /* One call in case CRT changes its abort() behaviour */
abort (); abort ();