[Python-checkins] gh-91731: Don't define 'static_assert' in C++11 where is a keyword to avoid UB (GH-93700)
pablogsal
webhook-mailer at python.org
Mon Jun 13 10:49:35 EDT 2022
https://github.com/python/cpython/commit/65ff27c7d30b84655bf8caf6e396c65485708148
commit: 65ff27c7d30b84655bf8caf6e396c65485708148
branch: main
author: Pablo Galindo Salgado <Pablogsal at gmail.com>
committer: pablogsal <Pablogsal at gmail.com>
date: 2022-06-13T15:49:08+01:00
summary:
gh-91731: Don't define 'static_assert' in C++11 where is a keyword to avoid UB (GH-93700)
files:
A Misc/NEWS.d/next/C API/2022-06-10-23-41-48.gh-issue-91731.fhYUQG.rst
M Include/pymacro.h
diff --git a/Include/pymacro.h b/Include/pymacro.h
index 0a2c342e2c8ae..e37cda44c5ebf 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 0000000000000..185671ca4fcfb
--- /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
More information about the Python-checkins
mailing list