From 0ac290e2e243148b9e84bb682cf1101fe38bc6e3 Mon Sep 17 00:00:00 2001 From: Martin Vogel Date: Thu, 3 Sep 2026 15:48:59 +0200 Subject: [PATCH] fix(cli): drop the POSIX probe-counter store that Clang 23 rejects `g_mcp_command_path_probe_counter` is only ever read inside `cbm_json_mcp_probe_command_path`, which is compiled for Windows alone. On POSIX test builds the setter stored a pointer nothing read, and Clang 23 (Homebrew LLVM 23.1.0, which `brew install llvm` now pours on the macOS LSan leg) flags that as `-Wunused-but-set-global`; with `-Werror` the whole test-runner build dies at `src/cli/cli.c:1768:21`. Keep the counter where a probe can happen (Windows) and make the POSIX setter an explicit no-op with the reason spelled out. The three tests that install a counter keep asserting it stays at zero on every platform, which on POSIX is exactly what "no classifier" means. Verified in the failing arena: `origin/main` `src/cli/cli.c` fails under clang 23.1.1 with the CI diagnostic; with this change it compiles clean, as do all 105 built `src` TUs and all 155 test + extraction TUs under the same flags. `cli` suite: 292 passed with Homebrew LLVM 22. Signed-off-by: Martin Vogel --- src/cli/cli.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/cli/cli.c b/src/cli/cli.c index 1e1c71f15..7badf1724 100644 --- a/src/cli/cli.c +++ b/src/cli/cli.c @@ -1765,14 +1765,25 @@ static bool cbm_json_mcp_command_path_probe_safe(const char *command) { #endif #ifdef CBM_CLI_ENABLE_TEST_API +#ifdef _WIN32 static CBM_TLS int *g_mcp_command_path_probe_counter = NULL; +#endif bool cbm_mcp_command_path_probe_safe_for_testing(const char *command, bool windows) { return cbm_json_mcp_command_path_probe_safe_for_platform(command, windows); } void cbm_set_mcp_command_path_probe_counter_for_testing(int *counter) { +#ifdef _WIN32 g_mcp_command_path_probe_counter = counter; +#else + /* The command-path classifier (cbm_json_mcp_probe_command_path) is compiled + * for Windows only, so on POSIX there is no probe to count. The tests still + * install a counter on every platform and assert it stays at zero; a pointer + * stored here but never read is what Clang 23 rejects under -Werror + * (-Wunused-but-set-global). */ + (void)counter; +#endif } #endif