# HG changeset patch # User Christian Brabandt # Date 1451583005 -3600 # Node ID c97735aaef9f78fdaa5395a05e2eeb53e7f3fe25 # Parent b2eab967e4871a6baed160c6296252aac869b0d5 commit https://github.com/vim/vim/commit/e3303cb0817e826e3c25d5dc4ac10b569d0841e1 Author: Bram Moolenaar Date: Thu Dec 31 18:29:46 2015 +0100 patch 7.4.1007 Problem: When a symbolic link points to a file in the root directory, the swapfile is not correct. Solution: Do not try getting the full name of a file in the root directory. (Milly, closes #501) diff --git a/src/os_unix.c b/src/os_unix.c --- a/src/os_unix.c +++ b/src/os_unix.c @@ -2507,8 +2507,10 @@ mch_FullName(fname, buf, len, force) fname = posix_fname; #endif - /* expand it if forced or not an absolute path */ - if (force || !mch_isFullName(fname)) + /* Expand it if forced or not an absolute path. + * Do not do it for "/file", the result is always "/". */ + if ((force || !mch_isFullName(fname)) + && ((p = vim_strrchr(fname, '/')) == NULL || p != fname)) { /* * If the file name has a path, change to that directory for a moment, @@ -2517,11 +2519,11 @@ mch_FullName(fname, buf, len, force) */ #ifdef OS2 only_drive = 0; - if (((p = vim_strrchr(fname, '/')) != NULL) + if (p != NULL || ((p = vim_strrchr(fname, '\\')) != NULL) || (((p = vim_strchr(fname, ':')) != NULL) && ++only_drive)) #else - if ((p = vim_strrchr(fname, '/')) != NULL) + if (p != NULL) #endif { #ifdef HAVE_FCHDIR diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1007, +/**/ 1006, /**/ 1005,