summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-10-05 20:38:06 +0200
committerBram Moolenaar <Bram@vim.org>2020-10-05 20:38:06 +0200
commit50c4e9e08fb0981892e33afb9fe3751aa6df1fa4 (patch)
treea56f543892b48098448b127fcadb64abf4662c87
parentafe8cf617013fd8c3f0189f1e1fa7a2a6a8f7511 (diff)
downloadvim-git-50c4e9e08fb0981892e33afb9fe3751aa6df1fa4.tar.gz
patch 8.2.1804: resolve('/') returns an empty stringv8.2.1804
Problem: resolve('/') returns an empty string. Solution: Don't remove single slash. (closes #7074)
-rw-r--r--src/filepath.c2
-rw-r--r--src/testdir/test_functions.vim2
-rw-r--r--src/version.c2
3 files changed, 5 insertions, 1 deletions
diff --git a/src/filepath.c b/src/filepath.c
index e2131a4b7..b692e227c 100644
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -1889,7 +1889,7 @@ f_resolve(typval_T *argvars, typval_T *rettv)
is_relative_to_current = TRUE;
len = STRLEN(p);
- if (len > 0 && after_pathsep(p, p + len))
+ if (len > 1 && after_pathsep(p, p + len))
{
has_trailing_pathsep = TRUE;
p[len - 1] = NUL; // the trailing slash breaks readlink()
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 45b997f50..b81612548 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -339,6 +339,8 @@ func Test_resolve_unix()
call assert_equal('Xlink2', resolve('Xlink1'))
call assert_equal('./Xlink2', resolve('./Xlink1'))
call delete('Xlink1')
+
+ call assert_equal('/', resolve('/'))
endfunc
func s:normalize_fname(fname)
diff --git a/src/version.c b/src/version.c
index e4bc870cc..cfd0d5458 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1804,
+/**/
1803,
/**/
1802,