From 32df86f1d80dc88bdde96e03ff021a196b4b4ea3 Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Fri, 5 Jun 2026 16:36:17 -0300 Subject: [PATCH] argsman: Prevent duplicate option registration across categories Added a validation in AddArg() preventing the same option name from being registered across different categories, avoiding ambiguous option resolution and make the distinction between global and command-specific options explicit. --- src/common/args.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/common/args.cpp b/src/common/args.cpp index c24ec4912a3..4721a90bc44 100644 --- a/src/common/args.cpp +++ b/src/common/args.cpp @@ -668,6 +668,11 @@ void ArgsManager::AddArg(const std::string& name, const std::string& help, unsig std::string arg_name = name.substr(0, eq_index); LOCK(cs_args); + + for (const auto& arg_map : m_available_args) { + Assert(!arg_map.second.contains(arg_name)); + } + std::map& arg_map = m_available_args[cat]; auto ret = arg_map.emplace(arg_name, Arg{name.substr(eq_index, name.size() - eq_index), help, flags}); assert(ret.second); // Make sure an insertion actually happened