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