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 #3072)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 4b3fdac..0094cdb 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -10654,6 +10654,7 @@
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 @@
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 @@
valid = 0; /* Must have ":p:h" to be valid */
}
else
+ {
result = buf->b_fname;
+ tilde_file = STRCMP(result, "~") == 0;
+ }
}
break;
@@ -10877,7 +10884,7 @@
#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)
{