From eed2d172c098648338e1aa7a5622c407f9ff042d Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 23 Apr 2024 20:11:45 +0000 Subject: Possible fix for [ef23a85ac6]: Tcl_PanicProc - Tcl9 & NaviServer --- generic/tcl.decls | 4 ++-- generic/tcl.h | 6 +++--- generic/tclEvent.c | 4 ++-- generic/tclPanic.c | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/generic/tcl.decls b/generic/tcl.decls index 41fe5f3..20b6cba 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -2417,10 +2417,10 @@ export { Tcl_LibraryInitProc *initProc, Tcl_LibraryInitProc *safeInitProc) } export { - const char *Tcl_SetPanicProc(TCL_NORETURN1 Tcl_PanicProc *panicProc) + const char *Tcl_SetPanicProc(Tcl_PanicProc *panicProc) } export { - Tcl_ExitProc *Tcl_SetExitProc(TCL_NORETURN1 Tcl_ExitProc *proc) + Tcl_ExitProc *Tcl_SetExitProc(Tcl_ExitProc *proc) } export { const char *Tcl_FindExecutable(const char *argv0) diff --git a/generic/tcl.h b/generic/tcl.h index d339b8f..774ac18 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -597,7 +597,7 @@ typedef void (Tcl_FreeProc) (char *blockPtr); #endif typedef int (Tcl_LibraryInitProc) (Tcl_Interp *interp); typedef int (Tcl_LibraryUnloadProc) (Tcl_Interp *interp, int flags); -typedef void (Tcl_PanicProc) (const char *format, ...); +typedef TCL_NORETURN1 void (Tcl_PanicProc) (const char *format, ...); typedef void (Tcl_TcpAcceptProc) (void *callbackData, Tcl_Channel chan, char *address, int port); typedef void (Tcl_TimerProc) (void *clientData); @@ -2371,7 +2371,7 @@ EXTERN void Tcl_GetMemoryInfo(Tcl_DString *dsPtr); EXTERN const char * Tcl_FindExecutable(const char *argv0); EXTERN const char * Tcl_SetPreInitScript(const char *string); EXTERN const char * Tcl_SetPanicProc( - TCL_NORETURN1 Tcl_PanicProc *panicProc); + Tcl_PanicProc *panicProc); EXTERN void Tcl_StaticLibrary(Tcl_Interp *interp, const char *prefix, Tcl_LibraryInitProc *initProc, @@ -2379,7 +2379,7 @@ EXTERN void Tcl_StaticLibrary(Tcl_Interp *interp, #ifndef TCL_NO_DEPRECATED # define Tcl_StaticPackage Tcl_StaticLibrary #endif -EXTERN Tcl_ExitProc *Tcl_SetExitProc(TCL_NORETURN1 Tcl_ExitProc *proc); +EXTERN Tcl_ExitProc *Tcl_SetExitProc(Tcl_ExitProc *proc); #ifdef _WIN32 EXTERN const char *TclZipfs_AppHook(int *argc, wchar_t ***argv); #else diff --git a/generic/tclEvent.c b/generic/tclEvent.c index 69c3c27..ad0f820 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -105,7 +105,7 @@ static const char ENCODING_ERROR[] = "\n\t(encoding error in stderr)"; * non-NULL value. */ -static TCL_NORETURN1 Tcl_ExitProc *appExitPtr = NULL; +static Tcl_ExitProc *appExitPtr = NULL; typedef struct ThreadSpecificData { ExitHandler *firstExitPtr; /* First in list of all exit handlers for this @@ -958,7 +958,7 @@ Tcl_Exit( int status) /* Exit status for application; typically 0 * for normal return, 1 for error return. */ { - TCL_NORETURN1 Tcl_ExitProc *currentAppExitPtr; + Tcl_ExitProc *currentAppExitPtr; Tcl_MutexLock(&exitMutex); currentAppExitPtr = appExitPtr; diff --git a/generic/tclPanic.c b/generic/tclPanic.c index 5a05c24..2dd33d2 100644 --- a/generic/tclPanic.c +++ b/generic/tclPanic.c @@ -23,7 +23,7 @@ * procedure. */ -static TCL_NORETURN1 Tcl_PanicProc *panicProc = NULL; +static Tcl_PanicProc *panicProc = NULL; /* *---------------------------------------------------------------------- @@ -43,7 +43,7 @@ static TCL_NORETURN1 Tcl_PanicProc *panicProc = NULL; const char * Tcl_SetPanicProc( - TCL_NORETURN1 Tcl_PanicProc *proc) + Tcl_PanicProc *proc) { panicProc = proc; return Tcl_InitSubsystems(); -- cgit v0.12 From 3bf92dcde456561e40d71aa784b3aa41fc52d202 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 23 Apr 2024 20:17:26 +0000 Subject: Still one TCL_NORETURN1 too much --- generic/tclEvent.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generic/tclEvent.c b/generic/tclEvent.c index ad0f820..49467c8 100644 --- a/generic/tclEvent.c +++ b/generic/tclEvent.c @@ -877,7 +877,7 @@ Tcl_DeleteThreadExitHandler( Tcl_ExitProc * Tcl_SetExitProc( - TCL_NORETURN1 Tcl_ExitProc *proc) /* New exit handler for app or NULL */ + Tcl_ExitProc *proc) /* New exit handler for app or NULL */ { Tcl_ExitProc *prevExitProc; -- cgit v0.12 From 915810280aced25ebdd12f953e7dde6bed493c03 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 23 Apr 2024 20:36:04 +0000 Subject: Missing "_" in __declspec --- generic/tcl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generic/tcl.h b/generic/tcl.h index 774ac18..90bc0c1 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -117,7 +117,7 @@ extern "C" { #else # define TCL_FORMAT_PRINTF(a,b) # if defined(_MSC_VER) -# define TCL_NORETURN _declspec(noreturn) +# define TCL_NORETURN __declspec(noreturn) # define TCL_NOINLINE __declspec(noinline) # else # define TCL_NORETURN /* nothing */ -- cgit v0.12 From 90d1f1029649d9e0a4400eb8d90ed443c9145280 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 24 Apr 2024 19:16:12 +0000 Subject: Improve use of TCL_NORETURN, so no unnecessary warnings are produced any more --- generic/tcl.h | 4 ++-- generic/tclPanic.c | 26 +++++++++++++------------- win/tclWinPanic.c | 16 +--------------- 3 files changed, 16 insertions(+), 30 deletions(-) diff --git a/generic/tcl.h b/generic/tcl.h index 90bc0c1..52288ab 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -597,7 +597,7 @@ typedef void (Tcl_FreeProc) (char *blockPtr); #endif typedef int (Tcl_LibraryInitProc) (Tcl_Interp *interp); typedef int (Tcl_LibraryUnloadProc) (Tcl_Interp *interp, int flags); -typedef TCL_NORETURN1 void (Tcl_PanicProc) (const char *format, ...); +typedef void (Tcl_PanicProc) (const char *format, ...); typedef void (Tcl_TcpAcceptProc) (void *callbackData, Tcl_Channel chan, char *address, int port); typedef void (Tcl_TimerProc) (void *clientData); @@ -2312,7 +2312,7 @@ const char * TclTomMathInitializeStubs(Tcl_Interp *interp, const char * TclInitStubTable(const char *version); void * TclStubCall(void *arg); #if defined(_WIN32) - TCL_NORETURN1 void Tcl_ConsolePanic(const char *format, ...); + void Tcl_ConsolePanic(const char *format, ...); #else # define Tcl_ConsolePanic NULL #endif diff --git a/generic/tclPanic.c b/generic/tclPanic.c index 2dd33d2..dcceb25 100644 --- a/generic/tclPanic.c +++ b/generic/tclPanic.c @@ -71,7 +71,7 @@ Tcl_SetPanicProc( */ /* coverity[+kill] */ -void +TCL_NORETURN void Tcl_Panic( const char *format, ...) @@ -104,21 +104,21 @@ Tcl_Panic( fprintf(stderr, "\n"); fflush(stderr); #endif -# if defined(__GNUC__) - __builtin_trap(); -# elif defined(_WIN64) - __debugbreak(); -# elif defined(_MSC_VER) && defined (_M_IX86) - _asm {int 3} -# elif defined(_WIN32) - DebugBreak(); -# endif + } +#if defined(__GNUC__) + __builtin_trap(); +#elif defined(_WIN64) + __debugbreak(); +#elif defined(_MSC_VER) && defined (_M_IX86) + _asm {int 3} +#elif defined(_WIN32) + DebugBreak(); +#endif #if defined(_WIN32) - ExitProcess(1); + ExitProcess(1); #else - abort(); + abort(); #endif - } } /* diff --git a/win/tclWinPanic.c b/win/tclWinPanic.c index 7928dcd..02bd767 100644 --- a/win/tclWinPanic.c +++ b/win/tclWinPanic.c @@ -28,7 +28,7 @@ *---------------------------------------------------------------------- */ -TCL_NORETURN1 void +void Tcl_ConsolePanic( const char *format, ...) { @@ -63,20 +63,6 @@ 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: -- cgit v0.12 From 15cba98c5ffee05a4d70898d4e8ec5471233221b Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 24 Apr 2024 19:41:08 +0000 Subject: Better keep Tcl_ConsolePanic as it was (with TCL_NORETURN) --- generic/tcl.h | 2 +- win/tclWinPanic.c | 16 +++++++++++++++- 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: -- cgit v0.12