]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.2.0985: simplify() does not remove slashes from "///path" v8.2.0985
authorBram Moolenaar <Bram@vim.org>
Mon, 15 Jun 2020 19:41:56 +0000 (21:41 +0200)
committerBram Moolenaar <Bram@vim.org>
Mon, 15 Jun 2020 19:41:56 +0000 (21:41 +0200)
Problem:    Simplify() does not remove slashes from "///path".
Solution:   Reduce > 2 slashes to one. (closes #6263)

src/findfile.c
src/testdir/test_functions.vim
src/version.c

index 2139d8bae614b7ca1c35aeed81c73c609987e372..b153ed010cd6b08d0f57273f97e8ec58164b21db 100644 (file)
@@ -2641,6 +2641,14 @@ simplify_filename(char_u *filename)
        while (vim_ispathsep(*p));
     }
     start = p;     // remember start after "c:/" or "/" or "///"
+#ifdef UNIX
+    // Posix says that "//path" is unchanged but "///path" is "/path".
+    if (start > filename + 2)
+    {
+       STRMOVE(filename + 1, p);
+       start = p = filename + 1;
+    }
+#endif
 
     do
     {
index 0a4e94e0a729bcc91d23d9ef9f8439c7ea326a74..aad5a8ce9a908acaaf10f3beb6292d36b337f451 100644 (file)
@@ -463,6 +463,10 @@ func Test_simplify()
   call assert_equal('/',           simplify('/.'))
   call assert_equal('/',           simplify('/..'))
   call assert_equal('/...',        simplify('/...'))
+  call assert_equal('//path',      simplify('//path'))
+  call assert_equal('/path',       simplify('///path'))
+  call assert_equal('/path',       simplify('////path'))
+
   call assert_equal('./dir/file',  './dir/file'->simplify())
   call assert_equal('./dir/file',  simplify('.///dir//file'))
   call assert_equal('./dir/file',  simplify('./dir/./file'))
@@ -1355,6 +1359,7 @@ endfunc
 
 " Test for the inputdialog() function
 func Test_inputdialog()
+  set timeout timeoutlen=10
   if has('gui_running')
     call assert_fails('let v=inputdialog([], "xx")', 'E730:')
     call assert_fails('let v=inputdialog("Q", [])', 'E730:')
@@ -1364,6 +1369,7 @@ func Test_inputdialog()
     call feedkeys(":let v=inputdialog('Q:', 'xx', 'yy')\<CR>\<Esc>", 'xt')
     call assert_equal('yy', v)
   endif
+  set timeout& timeoutlen&
 endfunc
 
 " Test for inputlist()
@@ -1916,7 +1922,7 @@ func Test_readdirex()
                          \ ->map({-> v:val.name})
   call sort(files)->assert_equal(['bar.txt', 'dir', 'foo.txt'])
 
-  " report brocken link correctly
+  " report broken link correctly
   if has("unix")
     call writefile([], 'Xdir/abc.txt')
     call system("ln -s Xdir/abc.txt Xdir/link")
index 91ae5ea1a59d7bb9f700c354c6db700546e75f2e..e8a8b335a42f027ff0070a75222cd7eb3ef3f74b 100644 (file)
@@ -754,6 +754,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    985,
 /**/
     984,
 /**/