diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-07-25 21:19:13 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-07-25 21:19:13 +0200 |
commit | 00136dc321586800986e8f743c2f108f5eecbf92 (patch) | |
tree | ad111932cd38d2914c866d4b45c3d84585fc81e1 /src/ex_docmd.c | |
parent | 6f8d2ac6f1f8a4b971a4c9b27f9250288198f3bb (diff) |
patch 8.1.0211: expanding a file name "~" results in $HOMEv8.1.0211
Problem: Expanding a file name "~" results in $HOME. (Aidan Shafran)
Solution: Change "~" to "./~" before expanding. (closes #3072)
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r-- | src/ex_docmd.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 4b3fdac375..0094cdba7d 100644 --- 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) { |