summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generic/tcl.h2
-rw-r--r--win/tclWinPanic.c16
2 files changed, 16 insertions, 2 deletions
diff --git a/generic/tcl.h b/generic/tcl.h
index 52288ab..d5951c4 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -2312,7 +2312,7 @@ const char * TclTomMathInitializeStubs(Tcl_Interp *interp,
const char * TclInitStubTable(const char *version);
void * TclStubCall(void *arg);
#if defined(_WIN32)
- void Tcl_ConsolePanic(const char *format, ...);
+ TCL_NORETURN void Tcl_ConsolePanic(const char *format, ...);
#else
# define Tcl_ConsolePanic NULL
#endif
diff --git a/win/tclWinPanic.c b/win/tclWinPanic.c
index 02bd767..65527f7 100644
--- a/win/tclWinPanic.c
+++ b/win/tclWinPanic.c
@@ -28,7 +28,7 @@
*----------------------------------------------------------------------
*/
-void
+TCL_NORETURN void
Tcl_ConsolePanic(
const char *format, ...)
{
@@ -63,6 +63,20 @@ Tcl_ConsolePanic(
WriteFile(handle, "\n", 1, &dummy, 0);
FlushFileBuffers(handle);
}
+# if defined(__GNUC__)
+ __builtin_trap();
+# elif defined(_WIN64)
+ __debugbreak();
+# elif defined(_MSC_VER)
+ _asm {int 3}
+# else
+ DebugBreak();
+# endif
+#if defined(_WIN32)
+ ExitProcess(1);
+#else
+ abort();
+#endif
}
/*
* Local Variables: