diff src/ex_docmd.c @ 14393:c62601adad69 v8.1.0211

patch 8.1.0211: expanding a file name "~" results in $HOME commit https://github.com/vim/vim/commit/00136dc321586800986e8f743c2f108f5eecbf92 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jul 25 21:19:13 2018 +0200 patch 8.1.0211: expanding a file name "~" results in $HOME Problem: Expanding a file name "~" results in $HOME. (Aidan Shafran) Solution: Change "~" to "./~" before expanding. (closes https://github.com/vim/vim/issues/3072)
author Christian Brabandt <cb@256bit.org>
date Wed, 25 Jul 2018 21:30:06 +0200
parents 95030c543411
children 289b850d2cbf
line wrap: on
line diff
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -10654,6 +10654,7 @@ eval_vars(
     int		resultlen;
     buf_T	*buf;
     int		valid = VALID_HEAD + VALID_PATH;    /* assume valid result */
+    int		tilde_file = FALSE;
     int		spec_idx;
 #ifdef FEAT_MODIFY_FNAME
     int		skip_mod = FALSE;
@@ -10720,7 +10721,10 @@ eval_vars(
 		    valid = 0;	    /* Must have ":p:h" to be valid */
 		}
 		else
+		{
 		    result = curbuf->b_fname;
+		    tilde_file = STRCMP(result, "~") == 0;
+		}
 		break;
 
 	case SPEC_HASH:		/* '#' or "#99": alternate file */
@@ -10784,7 +10788,10 @@ eval_vars(
 			valid = 0;	    /* Must have ":p:h" to be valid */
 		    }
 		    else
+		    {
 			result = buf->b_fname;
+			tilde_file = STRCMP(result, "~") == 0;
+		    }
 		}
 		break;
 
@@ -10877,7 +10884,7 @@ eval_vars(
 #ifdef FEAT_MODIFY_FNAME
 	else if (!skip_mod)
 	{
-	    valid |= modify_fname(src, usedlen, &result, &resultbuf,
+	    valid |= modify_fname(src, tilde_file, usedlen, &result, &resultbuf,
 								  &resultlen);
 	    if (result == NULL)
 	    {