diff src/memline.c @ 13896:4d5a1ada407e v8.0.1819

patch 8.0.1819: swap file warning for file with non-existing directory commit https://github.com/vim/vim/commit/8c3169c58eef3e04f643fe9e045a97b81429e0cb Author: Bram Moolenaar <Bram@vim.org> Date: Sat May 12 17:04:12 2018 +0200 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.
author Christian Brabandt <cb@256bit.org>
date Sat, 12 May 2018 17:15:05 +0200
parents cec5137d5332
children 8631b54ae2a2
line wrap: on
line diff
--- a/src/memline.c
+++ b/src/memline.c
@@ -4648,8 +4648,8 @@ 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
  *
  * Note that when the ino_t is 64 bits, only the last 32 will be used.  This
  * can't be changed without making the block 0 incompatible with 32 bit
@@ -4693,14 +4693,15 @@ fnamecmp_ino(
     retval_c = vim_FullName(fname_c, buf_c, MAXPATHL, TRUE);
     retval_s = vim_FullName(fname_s, buf_s, MAXPATHL, TRUE);
     if (retval_c == OK && retval_s == OK)
-	return (STRCMP(buf_c, buf_s) != 0);
+	return STRCMP(buf_c, buf_s) != 0;
 
     /*
      * 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 STRCMP(fname_c, fname_s) != 0;
     return TRUE;
 }
 #endif /* CHECK_INODE */