]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-91731: Don't define 'static_assert' in C++11 where is a keyword to avoid UB (GH...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 16 Jun 2022 14:50:15 +0000 (07:50 -0700)
committerGitHub <noreply@github.com>
Thu, 16 Jun 2022 14:50:15 +0000 (07:50 -0700)
(cherry picked from commit 65ff27c7d30b84655bf8caf6e396c65485708148)

Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
Include/pymacro.h
Misc/NEWS.d/next/C API/2022-06-10-23-41-48.gh-issue-91731.fhYUQG.rst [new file with mode: 0644]

index b959eeb3f58b35d2d3a7a9029e0594b3aba10134..90ad8f078444601232096f77309c0140002ad393 100644 (file)
 
 // 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 (file)
index 0000000..185671c
--- /dev/null
@@ -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