summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-06-06 17:34:13 +0200
committerBram Moolenaar <Bram@vim.org>2021-06-06 17:34:13 +0200
commit518df27ebe23033a25304d3826187c27bfa53c01 (patch)
tree2a759c254f983271afa6a0ef4ff2cba7435688f1
parent99285550a9957e2c8669f183557944c6513c4875 (diff)
downloadvim-git-518df27ebe23033a25304d3826187c27bfa53c01.tar.gz
patch 8.2.2953: Vim9: leaking memory when using heredoc scriptv8.2.2953
Problem: Vim9: leaking memory when using heredoc script. Solution: Free the first line.
-rw-r--r--src/version.c2
-rw-r--r--src/vim9execute.c8
2 files changed, 9 insertions, 1 deletions
diff --git a/src/version.c b/src/version.c
index 59cd0ce94..1e9a787e9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2953,
+/**/
2952,
/**/
2951,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 1f2f7357e..5a8a112a6 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1460,17 +1460,23 @@ exec_instructions(ectx_T *ectx)
case ISN_EXEC_SPLIT:
{
source_cookie_T cookie;
+ char_u *line;
SOURCING_LNUM = iptr->isn_lnum;
CLEAR_FIELD(cookie);
cookie.sourcing_lnum = iptr->isn_lnum - 1;
cookie.nextline = iptr->isn_arg.string;
- if (do_cmdline(get_split_sourceline(0, &cookie, 0, 0),
+ line = get_split_sourceline(0, &cookie, 0, 0);
+ if (do_cmdline(line,
get_split_sourceline, &cookie,
DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_KEYTYPED)
== FAIL
|| did_emsg)
+ {
+ vim_free(line);
goto on_error;
+ }
+ vim_free(line);
}
break;