Skip to content

Commit

Permalink
gh-91731: Don't define 'static_assert' in C++11 where is a keyword to…
Browse files Browse the repository at this point in the history
… avoid UB (GH-93700)

(cherry picked from commit 65ff27c)

Co-authored-by: Pablo Galindo Salgado <[email protected]>
  • Loading branch information
miss-islington and pablogsal authored Jun 16, 2022
1 parent 0c49a09 commit 7456109
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Include/pymacro.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 7456109

Please sign in to comment.