summaryrefslogtreecommitdiff
path: root/src/vim9compile.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-12-01 10:10:22 +0000
committerBram Moolenaar <Bram@vim.org>2021-12-01 10:10:22 +0000
commit56a8ffdb6e903615ed824a503f5fa6382b5b3df5 (patch)
treebae71cde0d9877bfbf21784e21f13c6cb46d1716 /src/vim9compile.c
parent3d2e031d4f0e1559e4a4f99de5eb2330f38f8eb5 (diff)
downloadvim-git-8.2.3711.tar.gz
patch 8.2.3711: Vim9: memory leak when compiling :elseif failsv8.2.3711
Problem: Vim9: memory leak when compiling :elseif fails. Solution: Cleanup ppconst.
Diffstat (limited to 'src/vim9compile.c')
-rw-r--r--src/vim9compile.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 3f72c7f39..2ed1f0e58 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -7888,6 +7888,7 @@ compile_elseif(char_u *arg, cctx_T *cctx)
cctx->ctx_skip = save_skip;
if (!ends_excmd2(arg, skipwhite(p)))
{
+ clear_ppconst(&ppconst);
semsg(_(e_trailing_arg), p);
return NULL;
}
@@ -7901,7 +7902,10 @@ compile_elseif(char_u *arg, cctx_T *cctx)
// The expression result is a constant.
v = tv_get_bool_chk(&ppconst.pp_tv[0], &error);
if (error)
+ {
+ clear_ppconst(&ppconst);
return NULL;
+ }
cctx->ctx_skip = v ? SKIP_NOT : SKIP_YES;
clear_ppconst(&ppconst);
scope->se_u.se_if.is_if_label = -1;