summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-02-05 21:14:00 +0100
committerBram Moolenaar <Bram@vim.org>2020-02-05 21:14:00 +0100
commita78e9c61a0ded9c5302bc77e889aa1b3d3467f61 (patch)
treeaa7685b88fa9a735d406d6bf2f86a05f34de41f6
parent2e6638d5f03ae183999c726ba63e528d556342c0 (diff)
downloadvim-git-a78e9c61a0ded9c5302bc77e889aa1b3d3467f61.tar.gz
patch 8.2.0215: wrong file name shorteningv8.2.0215
Problem: Wrong file name shortening. (Ingo Karkat) Solution: Better check for path separator. (Yasuhiro Matsumoto, closes #5583, closes #5584)
-rw-r--r--src/filepath.c18
-rw-r--r--src/testdir/test_fnamemodify.vim2
-rw-r--r--src/version.c2
3 files changed, 15 insertions, 7 deletions
diff --git a/src/filepath.c b/src/filepath.c
index 9a5d127ec..79eb7bf98 100644
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -448,14 +448,18 @@ repeat:
if (fnamencmp(p, dirname, namelen) == 0)
{
p += namelen;
- while (*p && vim_ispathsep(*p))
- ++p;
- *fnamep = p;
- if (pbuf != NULL)
+ if (vim_ispathsep(*p))
{
- vim_free(*bufp); // free any allocated file name
- *bufp = pbuf;
- pbuf = NULL;
+ while (*p && vim_ispathsep(*p))
+ ++p;
+ *fnamep = p;
+ if (pbuf != NULL)
+ {
+ // free any allocated file name
+ vim_free(*bufp);
+ *bufp = pbuf;
+ pbuf = NULL;
+ }
}
}
}
diff --git a/src/testdir/test_fnamemodify.vim b/src/testdir/test_fnamemodify.vim
index 7a21efef8..b35f15340 100644
--- a/src/testdir/test_fnamemodify.vim
+++ b/src/testdir/test_fnamemodify.vim
@@ -36,6 +36,8 @@ func Test_fnamemodify()
call chdir($HOME . '/XXXXXXXX/a/')
call assert_equal('foo', fnamemodify($HOME . '/XXXXXXXX/a/foo', ':p:~:.'))
call assert_equal('~/XXXXXXXX/b/foo', fnamemodify($HOME . '/XXXXXXXX/b/foo', ':p:~:.'))
+ call mkdir($HOME . '/XXXXXXXX/a.ext', 'p')
+ call assert_equal('~/XXXXXXXX/a.ext/foo', fnamemodify($HOME . '/XXXXXXXX/a.ext/foo', ':p:~:.'))
call chdir(cwd)
call delete($HOME . '/XXXXXXXX', 'rf')
diff --git a/src/version.c b/src/version.c
index 97584e37e..20a6be433 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 215,
+/**/
214,
/**/
213,