]> Savannah Git Hosting - gnulib.git/commitdiff
stdbool: Ensure that 'true' can be used in the preprocessor.
authorBruno Haible <bruno@clisp.org>
Sun, 18 Sep 2022 16:45:39 +0000 (18:45 +0200)
committerBruno Haible <bruno@clisp.org>
Sun, 18 Sep 2022 19:24:36 +0000 (21:24 +0200)
* lib/stdbool.in.h (true): Redefine if it does not evaluate to 1 in the
preprocessor.

ChangeLog
lib/stdbool.in.h

index a3cd50b84f5b19edcec3b5300adc13926e1cdb21..a5c9606cc8c04eb54bf8a12c0c19ea1b4cf51e9e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2022-09-18  Bruno Haible  <bruno@clisp.org>
+
+       stdbool: Ensure that 'true' can be used in the preprocessor.
+       * lib/stdbool.in.h (true): Redefine if it does not evaluate to 1 in the
+       preprocessor.
+
 2022-09-18  Bruno Haible  <bruno@clisp.org>
 
        signal: Fix a C++ compilation error due to sched_yield on OpenBSD 6.0.
index b1613d4f025f341efc9e7f9cd13d8452f44d981f..125de5a25e9c9b692911e4ebc5b9e6106818902e 100644 (file)
@@ -126,6 +126,13 @@ typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
 #  define false false
 #  define true true
 # endif
+/* In Sun C++ 5.11 (Solaris Studio 12.2) and older, 'true' as a preprocessor
+   expression evaluates to 0, not 1.  Fix this by overriding 'true'.  Note that
+   the replacement has to be of type 'bool'.  */
+# if defined __SUNPRO_CC && true != 1
+#  undef true
+#  define true (!false)
+# endif
 #else
 # define false 0
 # define true 1