mirror of
https://github.com/neovim/neovim.git
synced 2025-10-02 07:58:35 +00:00
vim-patch:7.4.832
Problem: $HOME in `=$HOME . '/.vimrc'` is expanded too early.
Solution: Skip over `=expr` when expanding environment names.
be83b73ddb
---
To reproduce:
```sh
nvim -u NONE -c 'e `=$HOME . "/.vimrc"`'
```
This commit is contained in:
@@ -262,8 +262,25 @@ void expand_env_esc(char_u *srcp, char_u *dst, int dstlen, bool esc, bool one,
|
|||||||
startstr_len = (int)STRLEN(startstr);
|
startstr_len = (int)STRLEN(startstr);
|
||||||
|
|
||||||
src = skipwhite(srcp);
|
src = skipwhite(srcp);
|
||||||
--dstlen; // leave one char space for "\,"
|
dstlen--; // leave one char space for "\,"
|
||||||
while (*src && dstlen > 0) {
|
while (*src && dstlen > 0) {
|
||||||
|
// Skip over `=expr`.
|
||||||
|
if (src[0] == '`' && src[1] == '=') {
|
||||||
|
var = src;
|
||||||
|
src += 2;
|
||||||
|
(void)skip_expr(&src);
|
||||||
|
if (*src == '`') {
|
||||||
|
src++;
|
||||||
|
}
|
||||||
|
size_t len = (size_t)(src - var);
|
||||||
|
if (len > (size_t)dstlen) {
|
||||||
|
len = (size_t)dstlen;
|
||||||
|
}
|
||||||
|
memcpy((char *)dst, (char *)var, len);
|
||||||
|
dst += len;
|
||||||
|
dstlen -= len;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
copy_char = true;
|
copy_char = true;
|
||||||
if ((*src == '$') || (*src == '~' && at_start)) {
|
if ((*src == '$') || (*src == '~' && at_start)) {
|
||||||
mustfree = false;
|
mustfree = false;
|
||||||
|
@@ -458,7 +458,7 @@ static int included_patches[] = {
|
|||||||
835,
|
835,
|
||||||
834,
|
834,
|
||||||
833,
|
833,
|
||||||
// 832,
|
832,
|
||||||
831,
|
831,
|
||||||
830,
|
830,
|
||||||
// 829 NA
|
// 829 NA
|
||||||
|
Reference in New Issue
Block a user