diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2018-08-10 00:01:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-10 00:01:32 +0200 |
commit | cf9dd7a3f473c5d523e7f248bfc6f83904fff74b (patch) | |
tree | d0bb65cc53b74927b09fca2064792f058ea4f797 /src | |
parent | cb7bdf5f920df089adab8a74d2522440ad2d1490 (diff) | |
parent | fc8965787b136bb0e34c4beda7da04786337ea1d (diff) | |
download | rneovim-cf9dd7a3f473c5d523e7f248bfc6f83904fff74b.tar.gz rneovim-cf9dd7a3f473c5d523e7f248bfc6f83904fff74b.tar.bz2 rneovim-cf9dd7a3f473c5d523e7f248bfc6f83904fff74b.zip |
Merge #8835 from janlazo/vim-8.0.1819
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/memline.c | 21 | ||||
-rw-r--r-- | src/nvim/testdir/test_swap.vim | 15 |
2 files changed, 26 insertions, 10 deletions
diff --git a/src/nvim/memline.c b/src/nvim/memline.c index 9a1e61d40b..3d5f4e8f3a 100644 --- a/src/nvim/memline.c +++ b/src/nvim/memline.c @@ -3525,17 +3525,16 @@ static int b0_magic_wrong(ZERO_BL *b0p) * == 0 == 0 OK FAIL TRUE * * current file doesn't exist, inode for swap unknown, both file names not - * available -> probably same file - * == 0 == 0 FAIL FAIL FALSE + * available -> compare file names + * == 0 == 0 FAIL FAIL fname_c != fname_s * * Only the last 32 bits of the inode will be used. This can't be changed * without making the block 0 incompatible with 32 bit versions. */ -static int -fnamecmp_ino ( - char_u *fname_c, /* current file name */ - char_u *fname_s, /* file name from swap file */ +static bool fnamecmp_ino( + char_u *fname_c, // current file name + char_u *fname_s, // file name from swap file long ino_block0 ) { @@ -3576,11 +3575,13 @@ fnamecmp_ino ( /* * Can't compare inodes or file names, guess that the files are different, - * unless both appear not to exist at all. + * unless both appear not to exist at all, then compare with the file name + * in the swap file. */ - if (ino_s == 0 && ino_c == 0 && retval_c == FAIL && retval_s == FAIL) - return FALSE; - return TRUE; + if (ino_s == 0 && ino_c == 0 && retval_c == FAIL && retval_s == FAIL) { + return STRCMP(fname_c, fname_s) != 0; + } + return true; } /* diff --git a/src/nvim/testdir/test_swap.vim b/src/nvim/testdir/test_swap.vim index 245e1f18bb..bc7b7c00d3 100644 --- a/src/nvim/testdir/test_swap.vim +++ b/src/nvim/testdir/test_swap.vim @@ -46,3 +46,18 @@ func Test_swap_directory() call delete("Xtest2", "rf") call delete("Xtest.je", "rf") endfunc + +func Test_missing_dir() + call mkdir('Xswapdir') + exe 'set directory=' . getcwd() . '/Xswapdir' + + call assert_equal('', glob('foo')) + call assert_equal('', glob('bar')) + edit foo/x.txt + " This should not give a warning for an existing swap file. + split bar/x.txt + only + + set directory& + call delete('Xswapdir', 'rf') +endfunc |