aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/os/env.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2016-02-21 15:21:53 -0500
committerJustin M. Keyes <justinkz@gmail.com>2016-02-21 15:21:53 -0500
commit81b68b0af3b3f01da40b966ef056bb53326a1b78 (patch)
tree7d02805f2e9ea7a77e5f7a78e9e6cbd3361899b7 /src/nvim/os/env.c
parent09e4c244ee665b51454830f7632f17096eabdab2 (diff)
parent693bf1dafb2ab07d972ed750d8e8f247ecf2db16 (diff)
downloadrneovim-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.c19
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;