diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-10-07 09:43:16 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-07 09:43:16 +0800 |
commit | cfdb4cbada8c65aa57e69776bcc0f7b8b298317a (patch) | |
tree | f367b6d7d2315ab67ee6ec36384fb4f0980002d0 /src/nvim/window.c | |
parent | d191070913dc195309926a91f97008defd877a71 (diff) | |
download | rneovim-cfdb4cbada8c65aa57e69776bcc0f7b8b298317a.tar.gz rneovim-cfdb4cbada8c65aa57e69776bcc0f7b8b298317a.tar.bz2 rneovim-cfdb4cbada8c65aa57e69776bcc0f7b8b298317a.zip |
fix: find multibyte file name in line (#20519)
And remove unnecessary unsigned casts in fold marker comparison.
Diffstat (limited to 'src/nvim/window.c')
-rw-r--r-- | src/nvim/window.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c index b505350892..d7ca718c68 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -6545,7 +6545,7 @@ char_u *file_name_in_line(char_u *line, int col, int options, long count, char_u // search forward for what could be the start of a file name ptr = (char *)line + col; - while (*ptr != NUL && !vim_isfilec(*ptr)) { + while (*ptr != NUL && !vim_isfilec((uint8_t)(*ptr))) { MB_PTR_ADV(ptr); } if (*ptr == NUL) { // nothing found @@ -6560,7 +6560,8 @@ char_u *file_name_in_line(char_u *line, int col, int options, long count, char_u while ((char_u *)ptr > line) { if ((len = (size_t)(utf_head_off((char *)line, ptr - 1))) > 0) { ptr -= len + 1; - } else if (vim_isfilec(ptr[-1]) || ((options & FNAME_HYP) && path_is_url(ptr - 1))) { + } else if (vim_isfilec((uint8_t)ptr[-1]) + || ((options & FNAME_HYP) && path_is_url(ptr - 1))) { ptr--; } else { break; @@ -6570,7 +6571,7 @@ char_u *file_name_in_line(char_u *line, int col, int options, long count, char_u // Search forward for the last char of the file name. // Also allow ":/" when ':' is not in 'isfname'. len = 0; - while (vim_isfilec(ptr[len]) || (ptr[len] == '\\' && ptr[len + 1] == ' ') + while (vim_isfilec((uint8_t)ptr[len]) || (ptr[len] == '\\' && ptr[len + 1] == ' ') || ((options & FNAME_HYP) && path_is_url(ptr + len)) || (is_url && vim_strchr(":?&=", ptr[len]) != NULL)) { // After type:// we also include :, ?, & and = as valid characters, so that |