mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
gh-133256: Add _Py_NONSTRING macro (#133257)
Fix GCC 15 compiler warnings such as:
In file included from Python/pylifecycle.c:26:
Include/internal/pycore_runtime.h:47:26: warning:
initializer-string for array of 'char' truncates NUL terminator
but destination lacks 'nonstring' attribute (9 chars into 8
available) [-Wunterminated-string-initialization]
47 | #define _Py_Debug_Cookie "xdebugpy"
| ^~~~~~~~~~
(cherry picked from commit e26bafd107
)
This commit is contained in:
parent
ae2e7958f2
commit
659631f769
2 changed files with 25 additions and 1 deletions
|
@ -60,7 +60,7 @@ typedef struct _Py_AuditHookEntry {
|
|||
} _Py_AuditHookEntry;
|
||||
|
||||
typedef struct _Py_DebugOffsets {
|
||||
char cookie[8];
|
||||
char cookie[8] _Py_NONSTRING;
|
||||
uint64_t version;
|
||||
uint64_t free_threaded;
|
||||
// Runtime state offset;
|
||||
|
|
|
@ -541,6 +541,14 @@ extern "C" {
|
|||
# define _Py__has_builtin(x) 0
|
||||
#endif
|
||||
|
||||
// Preprocessor check for a compiler __attribute__. Always return 0
|
||||
// if __has_attribute() macro is not defined.
|
||||
#ifdef __has_attribute
|
||||
# define _Py__has_attribute(x) __has_attribute(x)
|
||||
#else
|
||||
# define _Py__has_attribute(x) 0
|
||||
#endif
|
||||
|
||||
// _Py_TYPEOF(expr) gets the type of an expression.
|
||||
//
|
||||
// Example: _Py_TYPEOF(x) x_copy = (x);
|
||||
|
@ -606,4 +614,20 @@ extern "C" {
|
|||
# define _SGI_MP_SOURCE
|
||||
#endif
|
||||
|
||||
|
||||
// _Py_NONSTRING: The nonstring variable attribute specifies that an object or
|
||||
// member declaration with type array of char, signed char, or unsigned char,
|
||||
// or pointer to such a type is intended to store character arrays that do not
|
||||
// necessarily contain a terminating NUL.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// char name [8] _Py_NONSTRING;
|
||||
#if _Py__has_attribute(nonstring)
|
||||
# define _Py_NONSTRING __attribute__((nonstring))
|
||||
#else
|
||||
# define _Py_NONSTRING
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* Py_PYPORT_H */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue