From faed1d36850a2553a944ad121db1e99d437f543c Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Fri, 26 Apr 2024 11:27:58 +0000 Subject: Proposed fix for [1e48483c8b]: Use of non-standard C code in TCLBOOLWARNING --- generic/tclDecls.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/generic/tclDecls.h b/generic/tclDecls.h index c786392..2135911 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -4032,7 +4032,9 @@ extern const TclStubs *tclStubsPtr; #undef Tcl_GetIndexFromObjStruct #undef Tcl_GetBooleanFromObj #undef Tcl_GetBoolean -#ifdef __GNUC__ +#if !defined(__cplusplus) && !defined(BUILD_tcl) && !defined(BUILD_tk) +# define TCLBOOLWARNING(boolPtr) (int)(sizeof(struct {_Static_assert(sizeof(*(boolPtr)) <= sizeof(int), "sizeof(boolPtr) too large");int dummy;})*0) + +#elif defined(__GNUC__) /* If this gives: "error: size of array ‘_bool_Var’ is negative", it means that sizeof(*boolPtr)>sizeof(int), which is not allowed */ # define TCLBOOLWARNING(boolPtr) ({__attribute__((unused)) char _bool_Var[sizeof(*(boolPtr)) > sizeof(int) ? -1 : 1];}), #else -- cgit v0.12 From ee896f77072ed47885d31b7123c435e7bdaacba8 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Fri, 26 Apr 2024 12:29:23 +0000 Subject: Slightly better --- generic/tclDecls.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 2135911..69489de 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -4033,7 +4033,7 @@ extern const TclStubs *tclStubsPtr; #undef Tcl_GetBooleanFromObj #undef Tcl_GetBoolean #if !defined(__cplusplus) && !defined(BUILD_tcl) && !defined(BUILD_tk) -# define TCLBOOLWARNING(boolPtr) (int)(sizeof(struct {_Static_assert(sizeof(*(boolPtr)) <= sizeof(int), "sizeof(boolPtr) too large");int dummy;})*0) + +# define TCLBOOLWARNING(boolPtr) (void)(sizeof(struct {_Static_assert(sizeof(*(boolPtr)) <= sizeof(int), "sizeof(boolPtr) too large");int dummy;})), #elif defined(__GNUC__) /* If this gives: "error: size of array ‘_bool_Var’ is negative", it means that sizeof(*boolPtr)>sizeof(int), which is not allowed */ # define TCLBOOLWARNING(boolPtr) ({__attribute__((unused)) char _bool_Var[sizeof(*(boolPtr)) > sizeof(int) ? -1 : 1];}), -- cgit v0.12