changeset 7406:c97735aaef9f v7.4.1007

commit https://github.com/vim/vim/commit/e3303cb0817e826e3c25d5dc4ac10b569d0841e1 Author: Bram Moolenaar <Bram@vim.org> 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)
author Christian Brabandt <cb@256bit.org>
date Thu, 31 Dec 2015 18:30:05 +0100
parents b2eab967e487
children 829dfc144dd4
files src/os_unix.c src/version.c
diffstat 2 files changed, 8 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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,