summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2024-04-24 19:41:08 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2024-04-24 19:41:08 (GMT)
commit8c86aa7a7c204d3dda40b76bd361dc3f77de7175 (patch)
treee29df58654a12d65f3c64adcf96b77cd08accbe6
parentb5499cca599e67bff9d4e3a1a7d38fa4313625a2 (diff)
downloadtcl-8c86aa7a7c204d3dda40b76bd361dc3f77de7175.zip
tcl-8c86aa7a7c204d3dda40b76bd361dc3f77de7175.tar.gz
tcl-8c86aa7a7c204d3dda40b76bd361dc3f77de7175.tar.bz2
Better keep Tcl_ConsolePanic as it was (with TCL_NORETURN)
-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: