From 32a4c9f4f92dc9371a1a6ee053223babca89d4a1 Mon Sep 17 00:00:00 2001 From: ii14 <59243201+ii14@users.noreply.github.com> Date: Thu, 23 Nov 2023 22:26:33 +0100 Subject: [PATCH] perf: remove redundant strlen in skipwhite (#26177) skipwhite was iterating over the input twice and scanning for the null byte character with strlen. this is redundant, because it's already covered by ascii_iswhite that accepts only space or tab character. Co-authored-by: ii14 --- src/nvim/charset.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/nvim/charset.c b/src/nvim/charset.c index 5dfc9c444d..9a7de8ecef 100644 --- a/src/nvim/charset.c +++ b/src/nvim/charset.c @@ -903,11 +903,14 @@ bool vim_isprintc_strict(int c) /// @param[in] p String to skip in. /// /// @return Pointer to character after the skipped whitespace. -char *skipwhite(const char *const p) +char *skipwhite(const char *p) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NONNULL_RET { - return skipwhite_len(p, strlen(p)); + while (ascii_iswhite(*p)) { + p++; + } + return (char *)p; } /// Like `skipwhite`, but skip up to `len` characters.