aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2017-07-20 09:46:32 -0400
committerGitHub <noreply@github.com>2017-07-20 09:46:32 -0400
commit4bcc70b2b5b02e3a6048b55a4390739570db3524 (patch)
tree9945e93e7ebca2387221b6a11670f100000a0124 /src/nvim/eval.c
parentc40093f47a32fa4fc885ecae1f2f78cdb30d635d (diff)
parent710546c5e93cd433bd2eb566df52b58e3583c386 (diff)
downloadrneovim-4bcc70b2b5b02e3a6048b55a4390739570db3524.tar.gz
rneovim-4bcc70b2b5b02e3a6048b55a4390739570db3524.tar.bz2
rneovim-4bcc70b2b5b02e3a6048b55a4390739570db3524.zip
Merge pull request #7045 from jbradaric/vim-8.0.0085
vim-patch:8.0.0085
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index e5bb7f1b38..08b3d1dbd7 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -4239,11 +4239,17 @@ static int eval7(
// use its contents.
s = deref_func_name((const char *)s, &len, &partial, !evaluate);
+ // Need to make a copy, in case evaluating the arguments makes
+ // the name invalid.
+ s = xmemdupz(s, len);
+
// Invoke the function.
ret = get_func_tv(s, len, rettv, arg,
curwin->w_cursor.lnum, curwin->w_cursor.lnum,
&len, evaluate, partial, NULL);
+ xfree(s);
+
// If evaluate is false rettv->v_type was not set in
// get_func_tv, but it's needed in handle_subscript() to parse
// what follows. So set it here.