From: Junio C Hamano Date: Thu, 03 Sep 2026 18:13:29 GMT Subject: pathspec: match and original in pathspec_item are const Message-ID: In-Reply-To: Junio C Hamano writes: > This unfortunately triggers > > t/unit-tests/u-dir.c: In function 'test_dir__common_prefix_skips_excluded_pathspec_items': > t/unit-tests/u-dir.c:53:34: error: initialization discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers] > 53 | .match = "unrelated/path", > | ^~~~~~~~~~~~~~~~ > > Other than that, looking good. We may want a preparatory patch before this step. ----- >8 ----- Subject: pathspec: match and original in pathspec_item are const No existing code modifies these two strings in pathspec elements after they are created via these two pointers. Declare them as "const char *" to stress on this fact and cast away constness from the code that frees these two strings. Signed-off-by: Junio C Hamano --- pathspec.c | 4 ++-- pathspec.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git c/pathspec.c w/pathspec.c index f78b22709c..06b7065372 100644 --- c/pathspec.c +++ w/pathspec.c @@ -749,8 +749,8 @@ void clear_pathspec(struct pathspec *pathspec) int i, j; for (i = 0; i < pathspec->nr; i++) { - free(pathspec->items[i].match); - free(pathspec->items[i].original); + free((void *)pathspec->items[i].match); + free((void *)pathspec->items[i].original); for (j = 0; j < pathspec->items[i].attr_match_nr; j++) free(pathspec->items[i].attr_match[j].value); diff --git c/pathspec.h w/pathspec.h index 5e3a6f1fe7..fc1b9465ad 100644 --- c/pathspec.h +++ w/pathspec.h @@ -35,8 +35,8 @@ struct pathspec { unsigned magic; int max_depth; struct pathspec_item { - char *match; - char *original; + const char *match; + const char *original; unsigned magic; int len, prefix; int nowildcard_len;