diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-06-22 10:51:04 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-06-22 10:51:04 (GMT) |
commit | 90e7d603fcf06a4c1c35ebde8e4ddf74134d5844 (patch) | |
tree | 5c72174728826ad431deabc97f7e66399f8d3fe3 | |
parent | 607975b5dcc8af44e0fe65ab9ca787ed659e79bd (diff) | |
download | tcl-90e7d603fcf06a4c1c35ebde8e4ddf74134d5844.zip tcl-90e7d603fcf06a4c1c35ebde8e4ddf74134d5844.tar.gz tcl-90e7d603fcf06a4c1c35ebde8e4ddf74134d5844.tar.bz2 |
Restored the possibility to define a panicproc as
low memory handler See: [#1446864]
-rw-r--r-- | generic/tclPanic.c | 15 | ||||
-rw-r--r-- | win/tclWinError.c | 6 | ||||
-rw-r--r-- | win/tclWinFile.c | 10 |
3 files changed, 23 insertions, 8 deletions
diff --git a/generic/tclPanic.c b/generic/tclPanic.c index 84a9136..b87a8df 100644 --- a/generic/tclPanic.c +++ b/generic/tclPanic.c @@ -102,24 +102,23 @@ Tcl_PanicVA( arg8); fprintf(stderr, "\n"); fflush(stderr); - } - /* In case the users panic proc does not abort, we do it here */ #if defined(_WIN32) || defined(__CYGWIN__) # if defined(__GNUC__) - __builtin_trap(); + __builtin_trap(); # elif defined(_WIN64) - __debugbreak(); + __debugbreak(); # elif defined(_MSC_VER) - _asm {int 3} + _asm {int 3} # else - DebugBreak(); + DebugBreak(); # endif #endif #if defined(_WIN32) - ExitProcess(1); + ExitProcess(1); #else - abort(); + abort(); #endif + } } /* diff --git a/win/tclWinError.c b/win/tclWinError.c index 63e9598..49eeed3 100644 --- a/win/tclWinError.c +++ b/win/tclWinError.c @@ -410,6 +410,12 @@ tclWinDebugPanic( fprintf(stderr, "\n"); fflush(stderr); } +# if defined(__GNUC__) + __builtin_trap(); +# else + DebugBreak(); +# endif + abort(); } #endif /* diff --git a/win/tclWinFile.c b/win/tclWinFile.c index 2cc14ec..4a49b6c 100644 --- a/win/tclWinFile.c +++ b/win/tclWinFile.c @@ -819,6 +819,16 @@ tclWinDebugPanic( MessageBoxW(NULL, msgString, L"Fatal Error", MB_ICONSTOP | MB_OK | MB_TASKMODAL | MB_SETFOREGROUND); } +#if defined(__GNUC__) + __builtin_trap(); +#elif defined(_WIN64) + __debugbreak(); +#elif defined(_MSC_VER) + _asm {int 3} +#else + DebugBreak(); +#endif + abort(); } /* |