Skip to content

Commit

Permalink
patch 8.1.1417: MS-Windows: resolve() does not resolve all components…
Browse files Browse the repository at this point in the history
… of path

Problem:    MS-Windows: resolve() does not resolve all components of the path.
            (David Briscoe)
Solution:   Do not bail out for a reparse point. (Yasuhiro Matsumoto,
            closes #4211, closes #4447)
  • Loading branch information
brammool committed May 29, 2019
1 parent bc13354 commit 1bbebab
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 7 deletions.
6 changes: 0 additions & 6 deletions src/os_mswin.c
Expand Up @@ -1787,12 +1787,6 @@ resolve_reparse_point(char_u *fname)
if (p == NULL)
goto fail;

if ((GetFileAttributesW(p) & FILE_ATTRIBUTE_REPARSE_POINT) == 0)
{
vim_free(p);
goto fail;
}

h = CreateFileW(p, 0, 0, NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);
vim_free(p);
Expand Down
15 changes: 14 additions & 1 deletion src/testdir/test_functions.vim
Expand Up @@ -238,7 +238,7 @@ endfunc
func s:normalize_fname(fname)
let ret = substitute(a:fname, '\', '/', 'g')
let ret = substitute(ret, '//', '/', 'g')
let ret = tolower(ret)
return tolower(ret)
endfunc

func Test_resolve_win32()
Expand Down Expand Up @@ -330,6 +330,19 @@ func Test_resolve_win32()
echomsg 'skipped test for buffer name'
endif
call delete('Xfile')

" test for reparse point
call mkdir('Xdir')
silent !mklink /D Xdirlink Xdir
if !v:shell_error
w Xdir/text.txt
call assert_equal(s:normalize_fname(getcwd() . '\Xdir\text.txt'), s:normalize_fname(resolve('Xdirlink\text.txt')))
call assert_equal(s:normalize_fname(getcwd() . '\Xdir'), s:normalize_fname(resolve('Xdirlink')))
else
echomsg 'skipped test for reparse point'
endif

call delete('Xdir', 'rf')
endfunc

func Test_simplify()
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -767,6 +767,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1417,
/**/
1416,
/**/
Expand Down

0 comments on commit 1bbebab

Please sign in to comment.