diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2016-02-21 15:21:53 -0500 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2016-02-21 15:21:53 -0500 |
commit | 81b68b0af3b3f01da40b966ef056bb53326a1b78 (patch) | |
tree | 7d02805f2e9ea7a77e5f7a78e9e6cbd3361899b7 /src/nvim/os/env.c | |
parent | 09e4c244ee665b51454830f7632f17096eabdab2 (diff) | |
parent | 693bf1dafb2ab07d972ed750d8e8f247ecf2db16 (diff) | |
download | rneovim-81b68b0af3b3f01da40b966ef056bb53326a1b78.tar.gz rneovim-81b68b0af3b3f01da40b966ef056bb53326a1b78.tar.bz2 rneovim-81b68b0af3b3f01da40b966ef056bb53326a1b78.zip |
Merge pull request #4247 from watiko/vim-7.4.903
vim-patch:7.4.{831,832,845,903}
Diffstat (limited to 'src/nvim/os/env.c')
-rw-r--r-- | src/nvim/os/env.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/nvim/os/env.c b/src/nvim/os/env.c index c1804067e9..41ce8ddbc2 100644 --- a/src/nvim/os/env.c +++ b/src/nvim/os/env.c @@ -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); src = skipwhite(srcp); - --dstlen; // leave one char space for "\," + dstlen--; // leave one char space for "\," 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 -= (int)len; + continue; + } copy_char = true; if ((*src == '$') || (*src == '~' && at_start)) { mustfree = false; |