From b147427aa16309657856bd9ec6ef50c60b241e18 Mon Sep 17 00:00:00 2001
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date: Mon, 30 Nov 2020 23:57:11 +0100
Subject: Make string_t always use const_string_t

This will allow to relieve constraints in callers, e.g. dir_lookup("") would
otherwise produce a warning with gcc-11 since char[1024] would mean that
dir_lookup would read all 1024 characters while it is not.

* utils.c (UserVarQualifier): Also use const_ qualifier when type is
string_t.
* tests/includes/types.h (const_string_t): New type.
---
 utils.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

(limited to 'utils.c')

diff --git a/utils.c b/utils.c
index 4ddadc5..505f434 100644
--- a/utils.c
+++ b/utils.c
@@ -159,9 +159,13 @@ UserVarQualifier(const argument_t *arg)
     if (!UserVarConst(arg))
 	return "";
 
-    if (arg->argType->itIndefinite)
-        /* This is a pointer type, so we have to use the const_foo type to
-	   make const qualify the data, not the pointer.  */
+    if (arg->argType->itIndefinite ||
+	!strcmp(arg->argType->itUserType, "string_t"))
+        /* This is a pointer, so we have to use the const_foo type to
+	   make const qualify the data, not the pointer.
+
+	   Or this is a string_t, which should use const_string_t to avoid
+	   forcing the caller to respect the definite string size */
 	return "const_";
     else
 	return "const ";
-- 
cgit v1.2.3