summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-10-19 22:12:25 +0100
committerBram Moolenaar <Bram@vim.org>2021-10-19 22:12:25 +0100
commit8b0e62c93b6dad5ec5b2c7558d4f7b78c46216d2 (patch)
tree4d69964e5df4ca843790c9e0b3bbb36755c3061a
parentc5935a859ee31d56a565878d7a231fc59b7ddc01 (diff)
downloadvim-git-8b0e62c93b6dad5ec5b2c7558d4f7b78c46216d2.tar.gz
patch 8.2.3543: swapname has double slash when 'directory' ends in itv8.2.3543
Problem: Swapname has double slash when 'directory' ends in double slash. (Shane Smith) Solution: Remove the superfluous slash. (closes #8876)
-rw-r--r--src/memline.c6
-rw-r--r--src/testdir/test_swap.vim2
-rw-r--r--src/version.c2
3 files changed, 8 insertions, 2 deletions
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 "" (<currentdir>/"")
+ * signs, to "dir". An unnamed buffer is handled as "" (<currentdir>/"")
+ * 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
@@ -758,6 +758,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3543,
+/**/
3542,
/**/
3541,