From 35ef7ac6519364e5f0f05895a3b86d5cc840291b Mon Sep 17 00:00:00 2001 From: ii14 Date: Thu, 23 Nov 2023 21:58:18 +0100 Subject: [PATCH] perf: remove redundant strlen in skipwhite 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. (cherry picked from commit b4743dfefac302cf53f25c172e682c91e4009891) --- 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 f53917b2ec..4de64a9a2b 100644 --- a/src/nvim/charset.c +++ b/src/nvim/charset.c @@ -1211,11 +1211,14 @@ void getvcols(win_T *wp, pos_T *pos1, pos_T *pos2, colnr_T *left, colnr_T *right /// @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.