changeset 26018:c2d4e40a32a6 v8.2.3543

patch 8.2.3543: swapname has double slash when 'directory' ends in it Commit: https://github.com/vim/vim/commit/8b0e62c93b6dad5ec5b2c7558d4f7b78c46216d2 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Oct 19 22:12:25 2021 +0100 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)
author Bram Moolenaar <Bram@vim.org>
date Tue, 19 Oct 2021 23:15:03 +0200
parents 7fd14e99c44a
children 137f3bc03831
files src/memline.c src/testdir/test_swap.vim src/version.c
diffstat 3 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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 
 	    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);
 	}
--- 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&
--- 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,