summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
Diffstat (limited to 'generic')
-rw-r--r--generic/tcl.h7
-rw-r--r--generic/tclPanic.c16
2 files changed, 18 insertions, 5 deletions
diff --git a/generic/tcl.h b/generic/tcl.h
index 73229b1..70fee83 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -2419,9 +2419,14 @@ void Tcl_ConsolePanic(const char *format, ...);
* Tcl_GetMemoryInfo is needed for AOLserver. [Bug 1868171]
*/
+#ifdef _WIN32
#define Tcl_Main(argc, argv, proc) Tcl_MainEx(argc, argv, proc, \
(Tcl_SetPanicProc(Tcl_ConsolePanic), \
- Tcl_FindExecutable(argv[0]), (Tcl_CreateInterp)()))
+ Tcl_FindExecutable(argv[0]), (Tcl_CreateInterp)()))
+#else
+#define Tcl_Main(argc, argv, proc) Tcl_MainEx(argc, argv, proc, \
+ (Tcl_FindExecutable(argv[0]), (Tcl_CreateInterp)()))
+#endif
EXTERN void Tcl_MainEx(int argc, char **argv,
Tcl_AppInitProc *appInitProc, Tcl_Interp *interp);
EXTERN const char * Tcl_PkgInitStubsCheck(Tcl_Interp *interp,
diff --git a/generic/tclPanic.c b/generic/tclPanic.c
index a95b9c9..b87a8df 100644
--- a/generic/tclPanic.c
+++ b/generic/tclPanic.c
@@ -23,7 +23,11 @@
* procedure.
*/
+#if defined(__CYGWIN__)
+static Tcl_PanicProc *panicProc = tclWinDebugPanic;
+#else
static Tcl_PanicProc *panicProc = NULL;
+#endif
/*
*----------------------------------------------------------------------
@@ -45,6 +49,10 @@ void
Tcl_SetPanicProc(
Tcl_PanicProc *proc)
{
+#if defined(_WIN32)
+ /* tclWinDebugPanic only installs if there is no panicProc yet. */
+ if ((proc != tclWinDebugPanic) || (panicProc == NULL))
+#endif
panicProc = proc;
}
@@ -85,15 +93,15 @@ Tcl_PanicVA(
if (panicProc != NULL) {
panicProc(format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
- } else {
-#if defined(_WIN32) || defined(__CYGWIN__)
+#ifdef _WIN32
+ } else if (IsDebuggerPresent()) {
tclWinDebugPanic(format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
-#else
+#endif
+ } else {
fprintf(stderr, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7,
arg8);
fprintf(stderr, "\n");
fflush(stderr);
-#endif
#if defined(_WIN32) || defined(__CYGWIN__)
# if defined(__GNUC__)
__builtin_trap();