diff options
author | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-08-09 12:13:27 -0400 |
---|---|---|
committer | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-08-09 14:12:57 -0400 |
commit | e36fce75fb94461bccd8ebbcb5f544e39f85da2d (patch) | |
tree | 366037c436272e7789f0de3dcfdac3a9ba949fb3 /src/nvim/memline.c | |
parent | cb7bdf5f920df089adab8a74d2522440ad2d1490 (diff) | |
download | rneovim-e36fce75fb94461bccd8ebbcb5f544e39f85da2d.tar.gz rneovim-e36fce75fb94461bccd8ebbcb5f544e39f85da2d.tar.bz2 rneovim-e36fce75fb94461bccd8ebbcb5f544e39f85da2d.zip |
vim-patch:8.0.1819: swap file warning for file with non-existing directory
Problem: Swap file warning for a file in a non-existing directory, if there
is another with the same file name. (Juergen Weigert)
Solution: When expanding the file name fails compare the file names.
https://github.com/vim/vim/commit/8c3169c58eef3e04f643fe9e045a97b81429e0cb
Diffstat (limited to 'src/nvim/memline.c')
-rw-r--r-- | src/nvim/memline.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/nvim/memline.c b/src/nvim/memline.c index 9a1e61d40b..dfd44487d7 100644 --- a/src/nvim/memline.c +++ b/src/nvim/memline.c @@ -3525,8 +3525,8 @@ 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. @@ -3576,10 +3576,12 @@ 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; + if (ino_s == 0 && ino_c == 0 && retval_c == FAIL && retval_s == FAIL) { + return STRCMP(fname_c, fname_s) != 0; + } return TRUE; } |