]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-133256: Add _Py_NONSTRING macro (#133257)
authorVictor Stinner <vstinner@python.org>
Thu, 1 May 2025 15:55:49 +0000 (17:55 +0200)
committerGitHub <noreply@github.com>
Thu, 1 May 2025 15:55:49 +0000 (17:55 +0200)
Fix GCC 15 compiler warnings such as:

    Modules/fcntlmodule.c:27:36: warning: initializer-string for
    array of 'char' truncates NUL terminator but destination lacks
    'nonstring' attribute (9 chars into 8 available)
    [-Wunterminated-string-initialization]
    static const char guard[GUARDSZ] = "\x00\xfa\x69\xc4\x67\xa3\x6c\x58";

Include/internal/pycore_debug_offsets.h
Include/pyport.h
Modules/fcntlmodule.c

index b280633c9ef679c5f3c24016ff4f04412782e1ac..59d2c9d53779538cb7a6df2319fdda87547ab62f 100644 (file)
@@ -59,7 +59,7 @@ extern "C" {
 
 
 typedef struct _Py_DebugOffsets {
-    char cookie[8];
+    char cookie[8] _Py_NONSTRING;
     uint64_t version;
     uint64_t free_threaded;
     // Runtime state offset;
index ebce31f1d14a012ed31b2c71d11bb490d18d4b72..3eac119bf8e8d89d6f38d6ffa32221d51959ace4 100644 (file)
@@ -685,4 +685,19 @@ extern "C" {
 #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 */
index ebcacd2fb0ece15bfe5e4e92bb52f94991c09425..220ee9ecdffc8ab0eba2ac7e9d0d58da48f83f69 100644 (file)
@@ -24,7 +24,7 @@
 
 #define GUARDSZ 8
 // NUL followed by random bytes.
-static const char guard[GUARDSZ] = "\x00\xfa\x69\xc4\x67\xa3\x6c\x58";
+static const char guard[GUARDSZ] _Py_NONSTRING = "\x00\xfa\x69\xc4\x67\xa3\x6c\x58";
 
 /*[clinic input]
 module fcntl