From 362fd6ffbf624f004ce75d241ffb01126f9ec694 Mon Sep 17 00:00:00 2001 From: Bart House Date: Sat, 13 Jul 2019 16:00:14 -0700 Subject: [PATCH] Add stopping in the debugger when nhassert() is hit in the windows port. When stopping in the debugger after having called impossible, the windowing state will have been modified since the assertion was hit. This made examining state that caused the nhassert to fire no longer possible. To avoid this issue, we now detect the debugger and stop in the debugger prior to impossible. --- sys/winnt/winnt.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sys/winnt/winnt.c b/sys/winnt/winnt.c index 09ee0c9b4..f34a68397 100644 --- a/sys/winnt/winnt.c +++ b/sys/winnt/winnt.c @@ -726,9 +726,19 @@ nt_assert_failed(expression, filepath, line) { const char * filename; - /* get file name from path */ filename = strrchr(filepath, '\\'); filename = (filename == NULL ? filepath : filename + 1); + + if (IsDebuggerPresent()) { + char message[BUFSIZ]; + snprintf(message, sizeof(message), + "nhassert(%s) failed in file '%s' at line %d", + expression, filename, line); + OutputDebugStringA(message); + DebugBreak(); + } + + /* get file name from path */ impossible("nhassert(%s) failed in file '%s' at line %d", expression, filename, line); } -- 2.50.1