From 154986613fe8d25d086568426b394098a6f2f7aa Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 18 Sep 2022 11:26:36 -0700 Subject: [PATCH] =?UTF-8?q?stdbool:=20omit=20=E2=80=98#undef=20true?= =?UTF-8?q?=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is mostly just simplification. * m4/c-bool.m4 (gl_C_BOOL): Test all preprocessors when !HAVE_C_BOOL, not merely __SUNPRO_CC. Use the slightly more-elegant ‘!true’ instead of ‘true == 1’; this shouldn’t matter in practice and if it does matter we want to know about it anyway. Remove an unnecessary ‘#undef true’ that is simply commented out by ‘configure’; again, if true is already #defined to be 0 the system is so messed up we want to know about it anyway. --- ChangeLog | 12 ++++++++++++ m4/c-bool.m4 | 16 +++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 87c370bd04..77862ed623 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2022-09-18 Paul Eggert + + stdbool: omit ‘#undef true’ + This is mostly just simplification. + * m4/c-bool.m4 (gl_C_BOOL): Test all preprocessors when + !HAVE_C_BOOL, not merely __SUNPRO_CC. Use the slightly + more-elegant ‘!true’ instead of ‘true == 1’; this shouldn’t matter + in practice and if it does matter we want to know about it anyway. + Remove an unnecessary ‘#undef true’ that is simply commented out + by ‘configure’; again, if true is already #defined to be 0 the + system is so messed up we want to know about it anyway. + 2022-09-18 Bruno Haible stdbool: Ensure that 'true' can be used in the preprocessor. diff --git a/m4/c-bool.m4 b/m4/c-bool.m4 index 980de611b9..67c2cf2621 100644 --- a/m4/c-bool.m4 +++ b/m4/c-bool.m4 @@ -24,19 +24,17 @@ AC_DEFUN([gl_C_BOOL], dnl The "zz" puts this toward config.h's end, to avoid potential dnl collisions with other definitions. - dnl In C++ mode 'bool', 'true', 'false' are keywords and thus we don't need - dnl . But in C mode, we do. - dnl Check __bool_true_false_are_defined to avoid re-including . - dnl In Sun C++ 5.11 (Solaris Studio 12.2) and older, 'true' as a preprocessor - dnl expression evaluates to 0, not 1. Fix this by overriding 'true'. Note - dnl that the replacement has to be of type 'bool'. + dnl If 'bool', 'true' and 'false' do not work, arrange for them to work. + dnl In C, this means including if it is not already included. + dnl However, if the preprocessor mistakenly treats 'true' as 0, + dnl define it to a bool expression equal to 1; this is needed in + dnl Sun C++ 5.11 (Oracle Solaris Studio 12.2, 2010) and older. AH_VERBATIM([zzbool], -[#if !defined HAVE_C_BOOL +[#ifndef HAVE_C_BOOL # if !defined __cplusplus && !defined __bool_true_false_are_defined # include # endif -# if defined __SUNPRO_CC && true != 1 -# undef true +# if !true # define true (!false) # endif #endif]) -- 2.37.3