From ed908f760d9fe933690745bac91aedb698bbd48f Mon Sep 17 00:00:00 2001 From: John Marriott Date: Thu, 18 Apr 2024 22:46:56 +0200 Subject: patch 9.1.0352: Finding cmd modifiers and cmdline-specials is inefficient Problem: Finding cmd modifiers and cmdline-specials is inefficient Solution: Use binary search to find ex command modifiers and cmdline-special characters and reduce the number of strlen() (John Marriott) closes: #14534 Signed-off-by: John Marriott Signed-off-by: Christian Brabandt --- src/ex_cmds.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/ex_cmds.h') diff --git a/src/ex_cmds.h b/src/ex_cmds.h index cb758aa7c3..70e57708f5 100644 --- a/src/ex_cmds.h +++ b/src/ex_cmds.h @@ -99,13 +99,14 @@ typedef struct exarg exarg_T; */ #ifdef DO_DECLARE_EXCMD # define EXCMD(a, b, c, d, e) \ - {(char_u *)b, c, (long_u)(d), e} + {(char_u *)b, STRLEN_LITERAL(b), c, (long_u)(d), e} typedef void (*ex_func_T) (exarg_T *eap); static struct cmdname { char_u *cmd_name; // name of the command + size_t cmd_namelen; // length of the command name ex_func_T cmd_func; // function for this command long_u cmd_argt; // flags declared above cmd_addr_T cmd_addr_type; // flag for address type -- cgit v1.2.3