From a7600b54e6f41b0b70cda2b6a7e738cd9121b4b3 Mon Sep 17 00:00:00 2001 From: Nuno Marques Date: Thu, 7 May 2026 16:43:27 -0700 Subject: [PATCH] fix(param): restore half-open interval bound in param_find binary search The grouped-parameter refactor changed `last = param_info_count` to `last = param_info_count - 1` in `param_find_internal`. The binary search uses a half-open interval (`front <= last`, with `middle == front` as the termination condition), so shrinking `last` by one made the highest-named parameter unreachable. SITL exportImportAll caught this: BSON verify rejected `WV_YRATE_MAX` as `invalid parameter`, making `param_save_default` fail and tripping the `sitl-parameters` ctest. Restore the original upper bound. The added nullptr guards remain since they harden the path against an unset `param_info_count`. Signed-off-by: Nuno Marques --- src/lib/parameters/parameters.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/parameters/parameters.cpp b/src/lib/parameters/parameters.cpp index d081be7123..8a90e478ce 100644 --- a/src/lib/parameters/parameters.cpp +++ b/src/lib/parameters/parameters.cpp @@ -189,7 +189,7 @@ static param_t param_find_internal(const char *name, bool notification) param_t middle; param_t front = 0; - param_t last = param_info_count - 1; + param_t last = param_info_count; /* perform a binary search of the known parameters */