diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-08-18 22:32:03 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-08-18 22:32:03 +0200 |
commit | aeb2bdd0de5ce5b566509dda5ba9ad6f976063b3 (patch) | |
tree | 0f1b73d630fff86f5c939ec79498d83f46960e56 /src/eval.c | |
parent | 3affe7a6c6fc813f5d29857933ee6aca0b9c7bd6 (diff) | |
download | vim-git-aeb2bdd0de5ce5b566509dda5ba9ad6f976063b3.tar.gz |
patch 8.2.1482: Vim9: crash when using a nested lambdav8.2.1482
Problem: Vim9: crash when using a nested lambda.
Solution: Do not clear the growarray when not evaluating. Correct pointer
when getting the next line. (closes #6731)
Diffstat (limited to 'src/eval.c')
-rw-r--r-- | src/eval.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/eval.c b/src/eval.c index 585975a80..69f9f21e8 100644 --- a/src/eval.c +++ b/src/eval.c @@ -397,8 +397,10 @@ skip_expr_concatenate( int vim9script = in_vim9script(); garray_T *gap = &evalarg->eval_ga; int save_flags = evalarg == NULL ? 0 : evalarg->eval_flags; + int evaluate = evalarg == NULL + ? FALSE : (evalarg->eval_flags & EVAL_EVALUATE); - if (vim9script + if (vim9script && evaluate && (evalarg->eval_cookie != NULL || evalarg->eval_cctx != NULL)) { ga_init2(gap, sizeof(char_u *), 10); @@ -417,7 +419,7 @@ skip_expr_concatenate( if (evalarg != NULL) evalarg->eval_flags = save_flags; - if (vim9script + if (vim9script && evaluate && (evalarg->eval_cookie != NULL || evalarg->eval_cctx != NULL)) { if (evalarg->eval_ga.ga_len == 1) @@ -5425,6 +5427,7 @@ handle_subscript( && (p[2] == '{' || ASCII_ISALPHA(p[2]))))) { *arg = eval_next_line(evalarg); + p = *arg; check_white = FALSE; } |