[PATCH 4/9] string-h: Use _GL_ATTRIBUTE_NONNULL_IF_NONZERO in mempcpy

Lasse Collin <[email protected]> Fri, 31 Jul 2026 18:33:38 +0300
Newsgroups gmane.comp.lib.gnulib.bugs
Message-ID <[email protected]>
* lib/string.in.h: Use _GL_ATTRIBUTE_NONNULL_IF_NONZERO instead of
_GL_ARG_NONNULL in mempcpy. This matches the spirit of N3322.
mempcpy(NULL, ptr, 0) returns NULL + 0 which is valid after N3322.
---
 ChangeLog       | 7 +++++++
 lib/string.in.h | 6 ++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 4f62c653c0..436beb8e26 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2026-07-31  Lasse Collin  <[email protected]>
+
+	string-h: Use _GL_ATTRIBUTE_NONNULL_IF_NONZERO in mempcpy.
+	* lib/string.in.h: Use _GL_ATTRIBUTE_NONNULL_IF_NONZERO instead of
+	_GL_ARG_NONNULL in mempcpy. This matches the spirit of N3322.
+	mempcpy(NULL, ptr, 0) returns NULL + 0 which is valid after N3322.
+
 2026-07-31  Lasse Collin  <[email protected]>
 
 	string-h: Use _GL_ATTRIBUTE_NONNULL_IF_NONZERO in strnlen.
diff --git a/lib/string.in.h b/lib/string.in.h
index bc6e1e5f9e..f21ebce70f 100644
--- a/lib/string.in.h
+++ b/lib/string.in.h
@@ -482,7 +482,8 @@ _GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - "
 _GL_FUNCDECL_RPL (mempcpy, void *,
                   (void *restrict __dest, void const *restrict __src,
                    size_t __n),
-                  _GL_ARG_NONNULL ((1, 2)));
+                  _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3)
+                  _GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3));
 _GL_CXXALIAS_RPL (mempcpy, void *,
                   (void *restrict __dest, void const *restrict __src,
                    size_t __n));
@@ -491,7 +492,8 @@ _GL_CXXALIAS_RPL (mempcpy, void *,
 _GL_FUNCDECL_SYS (mempcpy, void *,
                   (void *restrict __dest, void const *restrict __src,
                    size_t __n),
-                  _GL_ARG_NONNULL ((1, 2)));
+                  _GL_ATTRIBUTE_NONNULL_IF_NONZERO (1, 3)
+                  _GL_ATTRIBUTE_NONNULL_IF_NONZERO (2, 3));
 #  endif
 _GL_CXXALIAS_SYS (mempcpy, void *,
                   (void *restrict __dest, void const *restrict __src,
-- 
2.55.0