Mercurial > vim
diff src/vim9expr.c @ 30437:d77a900f6094 v9.0.0554
patch 9.0.0554: using freed memory when command follows lambda
Commit: https://github.com/vim/vim/commit/f8addf1ca1d8c7801f6dded2341b7084d2b93e5e
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Sep 23 12:44:25 2022 +0100
patch 9.0.0554: using freed memory when command follows lambda
Problem: Using freed memory when command follows lambda.
Solution: Don't free what is still in use. (closes https://github.com/vim/vim/issues/11201)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 23 Sep 2022 13:45:06 +0200 |
parents | dac4fe437840 |
children | 54ba95d2d2eb |
line wrap: on
line diff
--- a/src/vim9expr.c +++ b/src/vim9expr.c @@ -522,10 +522,12 @@ compile_load( { type = lvar.lv_type; idx = lvar.lv_idx; - outer_loop_depth = lvar.lv_loop_depth; - outer_loop_idx = lvar.lv_loop_idx; if (lvar.lv_from_outer != 0) + { gen_load_outer = lvar.lv_from_outer; + outer_loop_depth = lvar.lv_loop_depth; + outer_loop_idx = lvar.lv_loop_idx; + } else gen_load = TRUE; } @@ -1096,6 +1098,7 @@ compile_lambda(char_u **arg, cctx_T *cct *arg = ((char_u **)cctx->ctx_ufunc->uf_lines.ga_data)[cctx->ctx_lnum] + off; + evalarg.eval_using_cmdline = FALSE; } clear_evalarg(&evalarg, NULL);