patch 9.0.2154: The option[] array is not sorted
Problem: The options[] array is not sorted alphabetically.
Solution: Sort it alphabetically. Add a test. Avoid unnecessary loop
iterations in findoption().
closes: #13648
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/option.c b/src/option.c
index df81cf3..4d12834 100644
--- a/src/option.c
+++ b/src/option.c
@@ -4933,11 +4933,13 @@
opt_idx = quick_tab[26];
else
opt_idx = quick_tab[CharOrdLow(arg[0])];
- for ( ; (s = options[opt_idx].fullname) != NULL; opt_idx++)
+ for (; (s = options[opt_idx].fullname) != NULL && s[0] == arg[0]; opt_idx++)
{
if (STRCMP(arg, s) == 0) // match full name
break;
}
+ if (s != NULL && s[0] != arg[0])
+ s = NULL;
if (s == NULL && !is_term_opt)
{
opt_idx = quick_tab[CharOrdLow(arg[0])];