Some compilers define __STDC_VERSION__ in c++
authorNiclas Rosenvik <youremailsarecrap@gmail.com>
Tue, 20 Apr 2021 17:14:27 +0000 (19:14 +0200)
committerTomas Mraz <tomas@openssl.org>
Thu, 22 Apr 2021 15:53:01 +0000 (17:53 +0200)
Some compilers(g++ on Solaris/Illumos) define __STDC__VERSION__ in c++ .
This causes c++ code that uses openssl to break on these compilers since
_Noreturn is not a keyword in c++ .

CLA: trivial

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14944)

(cherry picked from commit 1f3b58d8413cfa3824e9c0a146dee6ceedbc367e)

include/openssl/e_os2.h

index cf308eee2cd252d157c30929af0fd11378752588..4c4975dbfd7f8758b9c73eff7a65ed62e7bf8ea3 100644 (file)
@@ -279,7 +279,8 @@ typedef unsigned __int64 uint64_t;
 #  define ossl_inline inline
 # endif
 
-# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && \
+     !defined(__cplusplus) 
 #  define ossl_noreturn _Noreturn
 # elif defined(__GNUC__) && __GNUC__ >= 2
 #  define ossl_noreturn __attribute__((noreturn))