From 8ea18119e7bbbf956680266b6e1a69bc5fa4b40d Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sun, 9 Mar 2025 08:00:53 +0800 Subject: vim-patch:9.1.1184: Unnecessary use of vim_tolower() in vim_strnicmp_asc() (#32792) Problem: Unnecessary use of vim_tolower() in vim_strnicmp_asc(). Solution: Use TOLOWER_ASC() instead (zeertzjq). It was passing *s1 and *s2 to vim_tolower(). When char is signed, which is the case on most platforms, c < 0x80 is always true, so it already behaves the same as TOLOWER_ASC(). closes: vim/vim#16826 https://github.com/vim/vim/commit/b7dc5d3b6169efc8aa0b9d86476072877e74bc2c Use this function for hashy case-insensitive lookup, as it's ASCII-only. Note that this function doesn't cast TOLOWER_ASC() argument to uint8_t, so it'll treat a UTF-8 byte as smaller than NUL. It doesn't matter, as one of the strings being compared is ASCII-only, and its behavior still leads to consistent ordering. --- src/gen/hashy.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/gen/hashy.lua') diff --git a/src/gen/hashy.lua b/src/gen/hashy.lua index 48292bfc0e..7fdb00699f 100644 --- a/src/gen/hashy.lua +++ b/src/gen/hashy.lua @@ -129,14 +129,14 @@ function M.hashy_hash(name, strings, access, lower) } } return -1; -]]):format(lower and 'mb_strnicmp' or 'memcmp', access('i'))) +]]):format(lower and 'vim_strnicmp_asc' or 'memcmp', access('i'))) else put(([[ if (low < 0 || %s(str, %s, len)) { return -1; } return low; -]]):format(lower and 'mb_strnicmp' or 'memcmp', access('low'))) +]]):format(lower and 'vim_strnicmp_asc' or 'memcmp', access('low'))) end put '}\n\n' return neworder, table.concat(stats) -- cgit