]> granicus.if.org Git - vim/commitdiff
patch 8.2.2953: Vim9: leaking memory when using heredoc script v8.2.2953
authorBram Moolenaar <Bram@vim.org>
Sun, 6 Jun 2021 15:34:13 +0000 (17:34 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 6 Jun 2021 15:34:13 +0000 (17:34 +0200)
Problem:    Vim9: leaking memory when using heredoc script.
Solution:   Free the first line.

src/version.c
src/vim9execute.c

index 59cd0ce949ea4dd3257c1215c8bf2afe7cdf1bec..1e9a787e9b0a7d5d403d115c3fc824803b9b2dbb 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2953,
 /**/
     2952,
 /**/
index 1f2f7357e83bb8ecc67d884bcebae36919af4a90..5a8a112a6a6f96eeff1e956d78335d980bd525d1 100644 (file)
@@ -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;