# HG changeset patch # User Bram Moolenaar # Date 1580933704 -3600 # Node ID 782f410c5df35e8dfc41ae9c01c7c35f26cc9987 # Parent 631cb8bf602796b3f2bd1cd08c1e6c062ae4a014 patch 8.2.0215: wrong file name shortening Commit: https://github.com/vim/vim/commit/a78e9c61a0ded9c5302bc77e889aa1b3d3467f61 Author: Bram Moolenaar Date: Wed Feb 5 21:14:00 2020 +0100 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 --- 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 --- 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 --- 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,