From 4d5ae24c0ac79c4e360773bac58dd2c2a46b7f67 Mon Sep 17 00:00:00 2001 From: Xuan-Son Nguyen Date: Sat, 13 Dec 2025 12:53:37 +0100 Subject: [PATCH] arg: fix common_params_parse not accepting negated arg (#17991) --- common/arg.cpp | 5 ++++- common/arg.h | 2 +- tests/test-arg-parser.cpp | 4 ++++ tools/server/server-models.cpp | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/common/arg.cpp b/common/arg.cpp index 19f22f883f..bb2a6840ba 100644 --- a/common/arg.cpp +++ b/common/arg.cpp @@ -724,7 +724,7 @@ static void add_rpc_devices(const std::string & servers) { } } -bool common_params_parse(int argc, char ** argv, llama_example ex, std::map & out_map) { +bool common_params_to_map(int argc, char ** argv, llama_example ex, std::map & out_map) { common_params dummy_params; common_params_context ctx_arg = common_params_parser_init(dummy_params, ex, nullptr); @@ -733,6 +733,9 @@ bool common_params_parse(int argc, char ** argv, llama_example ex, std::map & out_map); +bool common_params_to_map(int argc, char ** argv, llama_example ex, std::map & out_map); // initialize argument parser context - used by test-arg-parser and preset common_params_context common_params_parser_init(common_params & params, llama_example ex, void(*print_usage)(int, char **) = nullptr); diff --git a/tests/test-arg-parser.cpp b/tests/test-arg-parser.cpp index 90750b20c2..468d325e22 100644 --- a/tests/test-arg-parser.cpp +++ b/tests/test-arg-parser.cpp @@ -72,6 +72,10 @@ int main(void) { argv = {"binary_name", "--draft", "123"}; assert(false == common_params_parse(argv.size(), list_str_to_char(argv).data(), params, LLAMA_EXAMPLE_EMBEDDING)); + // negated arg + argv = {"binary_name", "--no-mmap"}; + assert(false == common_params_parse(argv.size(), list_str_to_char(argv).data(), params, LLAMA_EXAMPLE_COMMON)); + printf("test-arg-parser: test valid usage\n\n"); diff --git a/tools/server/server-models.cpp b/tools/server/server-models.cpp index 6c618a673c..6be5ffbdf0 100644 --- a/tools/server/server-models.cpp +++ b/tools/server/server-models.cpp @@ -171,7 +171,7 @@ server_presets::server_presets(int argc, char ** argv, common_params & base_para } // read base args from router's argv - common_params_parse(argc, argv, LLAMA_EXAMPLE_SERVER, base_args); + common_params_to_map(argc, argv, LLAMA_EXAMPLE_SERVER, base_args); // remove any router-controlled args from base_args for (const auto & cargs : control_args) {