enhanced assertion output for win32

This commit is contained in:
2014-04-23 04:37:57 +00:00
parent ec56609d4f
commit fab24cd3d3
9 changed files with 83 additions and 29 deletions

View File

@ -127,6 +127,7 @@ void qse_assert_failed (
#else /* macintosh */
#if defined(HAVE_BACKTRACE)
void* btarray[128];
qse_size_t btsize, i;
@ -134,6 +135,36 @@ void qse_assert_failed (
#endif
qse_sio_t* sio, siobuf;
#if defined(_WIN32)
{
HANDLE stderr;
stderr = GetStdHandle (STD_ERROR_HANDLE);
if (stderr != INVALID_HANDLE_VALUE)
{
DWORD mode;
if (GetConsoleMode (stderr, &mode) == FALSE)
stderr = INVALID_HANDLE_VALUE;
}
if (stderr == INVALID_HANDLE_VALUE)
{
/* Use a message box if stderr is not available */
qse_char_t tmp[512];
qse_strxfmt (tmp, QSE_COUNTOF(tmp),
QSE_T("FILE %s LINE %lu - %s%s%s"),
file, line, expr,
(desc? QSE_T("\n\n"): QSE_T("")),
(desc? desc: QSE_T(""))
);
MessageBox (QSE_NULL, tmp, QSE_T("ASSERTION FAILURE"), MB_OK | MB_ICONERROR);
goto done;
}
}
#endif
sio = &siobuf;
qse_sio_initstd (
sio, QSE_MMGR_GETDFL(), QSE_SIO_STDERR,
@ -196,6 +227,7 @@ void qse_assert_failed (
qse_sio_fini (sio);
#endif /* macintosh */
done:
#if defined(_WIN32)
ExitProcess (249);
#elif defined(__OS2__)

View File

@ -24,7 +24,7 @@
#if !defined(QSE_HAVE_CONFIG_H)
# if defined(_WIN32) || defined(__OS2__) || defined(__DOS__)
# if (defined(__WATCOMC__) && (__WATCOMC__ < 1200))
# if (defined(__WATCOMC__) && (__WATCOMC__ < 1200)) || defined(__BORLANDC__)
# undef HAVE_VA_COPY
# undef HAVE___VA_COPY
# else