From: Bram Moolenaar Date: Tue, 19 Oct 2021 21:12:25 +0000 (+0100) Subject: patch 8.2.3543: swapname has double slash when 'directory' ends in it X-Git-Tag: v8.2.3543 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8b0e62c93b6dad5ec5b2c7558d4f7b78c46216d2;p=vim patch 8.2.3543: swapname has double slash when 'directory' ends in it Problem: Swapname has double slash when 'directory' ends in double slash. (Shane Smith) Solution: Remove the superfluous slash. (closes #8876) --- diff --git a/src/memline.c b/src/memline.c index bfbf4e280..f54a970cc 100644 --- a/src/memline.c +++ b/src/memline.c @@ -2064,7 +2064,9 @@ recover_names( /* * Need _very_ long file names. * Append the full path to name with path separators made into percent - * signs, to dir. An unnamed buffer is handled as "" (/"") + * signs, to "dir". An unnamed buffer is handled as "" (/"") + * The last character in "dir" must be an extra slash or backslash, it is + * removed. */ char_u * make_percent_swname(char_u *dir, char_u *name) @@ -2081,6 +2083,8 @@ make_percent_swname(char_u *dir, char_u *name) for (d = s; *d != NUL; MB_PTR_ADV(d)) if (vim_ispathsep(*d)) *d = '%'; + + dir[STRLEN(dir) - 1] = NUL; // remove one trailing slash d = concat_fnames(dir, s, TRUE); vim_free(s); } diff --git a/src/testdir/test_swap.vim b/src/testdir/test_swap.vim index 72d204ae0..143a9af19 100644 --- a/src/testdir/test_swap.vim +++ b/src/testdir/test_swap.vim @@ -410,7 +410,7 @@ func Test_swap_symlink() " Check that this also works when 'directory' ends with '//' edit Xtestlink - call assert_match('Xtestfile\.swp$', s:swapname()) + call assert_match('Xswapdir[/\\]%.*testdir%Xtestfile\.swp$', s:swapname()) bwipe! set dir& diff --git a/src/version.c b/src/version.c index f44953291..c3f1fd6ab 100644 --- a/src/version.c +++ b/src/version.c @@ -757,6 +757,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3543, /**/ 3542, /**/