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 <martin.vogel.tech@gmail.com>
This commit is contained in:
Martin Vogel
2026-09-03 15:48:59 +02:00
parent 5802ccdd77
commit 0ac290e2e2
+11
View File
@@ -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