From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Thu, 16 Jun 2022 14:50:15 +0000 (-0700) Subject: gh-91731: Don't define 'static_assert' in C++11 where is a keyword to avoid UB (GH... X-Git-Tag: v3.11.0b4~157 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=74561095d906c2ca8ca8f41f22cb23a9e5b58954;p=thirdparty%2FPython%2Fcpython.git gh-91731: Don't define 'static_assert' in C++11 where is a keyword to avoid UB (GH-93700) (cherry picked from commit 65ff27c7d30b84655bf8caf6e396c65485708148) Co-authored-by: Pablo Galindo Salgado --- diff --git a/Include/pymacro.h b/Include/pymacro.h index b959eeb3f58b..90ad8f078444 100644 --- a/Include/pymacro.h +++ b/Include/pymacro.h @@ -12,8 +12,10 @@ // static_assert is defined in glibc from version 2.16. Before it requires // compiler support (gcc >= 4.6) and is called _Static_assert. +// In C++ 11 static_assert is a keyword, redefining is undefined behaviour. #if (defined(__GLIBC__) \ && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 16)) \ + && !(defined(__cplusplus) && __cplusplus >= 201103L) \ && !defined(static_assert)) # define static_assert _Static_assert #endif diff --git a/Misc/NEWS.d/next/C API/2022-06-10-23-41-48.gh-issue-91731.fhYUQG.rst b/Misc/NEWS.d/next/C API/2022-06-10-23-41-48.gh-issue-91731.fhYUQG.rst new file mode 100644 index 000000000000..185671ca4fcf --- /dev/null +++ b/Misc/NEWS.d/next/C API/2022-06-10-23-41-48.gh-issue-91731.fhYUQG.rst @@ -0,0 +1,3 @@ +Avoid defining the ``static_assert`` when compiling with C++ 11, where this +is a keyword and redefining it can lead to undefined behavior. Patch by +Pablo Galindo