Merge #8835 from janlazo/vim-8.0.1819

This commit is contained in:
Justin M. Keyes
2018-08-10 00:01:32 +02:00
committed by GitHub
2 changed files with 26 additions and 10 deletions

View File

@@ -3525,17 +3525,16 @@ static int b0_magic_wrong(ZERO_BL *b0p)
* == 0 == 0 OK FAIL TRUE * == 0 == 0 OK FAIL TRUE
* *
* current file doesn't exist, inode for swap unknown, both file names not * current file doesn't exist, inode for swap unknown, both file names not
* available -> probably same file * available -> compare file names
* == 0 == 0 FAIL FAIL FALSE * == 0 == 0 FAIL FAIL fname_c != fname_s
* *
* Only the last 32 bits of the inode will be used. This can't be changed * 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. * without making the block 0 incompatible with 32 bit versions.
*/ */
static int static bool fnamecmp_ino(
fnamecmp_ino ( char_u *fname_c, // current file name
char_u *fname_c, /* current file name */ char_u *fname_s, // file name from swap file
char_u *fname_s, /* file name from swap file */
long ino_block0 long ino_block0
) )
{ {
@@ -3576,11 +3575,13 @@ fnamecmp_ino (
/* /*
* Can't compare inodes or file names, guess that the files are different, * 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) if (ino_s == 0 && ino_c == 0 && retval_c == FAIL && retval_s == FAIL) {
return FALSE; return STRCMP(fname_c, fname_s) != 0;
return TRUE; }
return true;
} }
/* /*

View File

@@ -46,3 +46,18 @@ func Test_swap_directory()
call delete("Xtest2", "rf") call delete("Xtest2", "rf")
call delete("Xtest.je", "rf") call delete("Xtest.je", "rf")
endfunc 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