patch 8.2.0215: wrong file name shortening
Problem: Wrong file name shortening. (Ingo Karkat)
Solution: Better check for path separator. (Yasuhiro Matsumoto,
closes #5583, closes #5584)
diff --git a/src/filepath.c b/src/filepath.c
index 9a5d127..79eb7bf 100644
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -448,14 +448,18 @@
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 7a21efe..b35f153 100644
--- a/src/testdir/test_fnamemodify.vim
+++ b/src/testdir/test_fnamemodify.vim
@@ -36,6 +36,8 @@
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 97584e3..20a6be4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 215,
+/**/
214,
/**/
213,