]> granicus.if.org Git - vim/commitdiff
patch 8.2.2661: leaking memory when looping over a string v8.2.2661
authorBram Moolenaar <Bram@vim.org>
Fri, 26 Mar 2021 21:15:26 +0000 (22:15 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 26 Mar 2021 21:15:26 +0000 (22:15 +0100)
Problem:    Leaking memory when looping over a string.
Solution:   Free the memory.

src/eval.c
src/version.c

index b4593babaaccf7c8f1c846b9b3090af6cbd82c8c..6522f0f24efdbbe25b72a44d8cbaea5b7a489c4c 100644 (file)
@@ -1815,8 +1815,10 @@ next_for_item(void *fi_void, char_u *arg)
        tv.v_lock = VAR_FIXED;
        tv.vval.v_string = vim_strnsave(fi->fi_string + fi->fi_byte_idx, len);
        fi->fi_byte_idx += len;
-       return ex_let_vars(arg, &tv, TRUE, fi->fi_semicolon,
+       result = ex_let_vars(arg, &tv, TRUE, fi->fi_semicolon,
                                            fi->fi_varcount, flag, NULL) == OK;
+       vim_free(tv.vval.v_string);
+       return result;
     }
 
     item = fi->fi_lw.lw_item;
index f172437afe82a474fd8baf87e79229e360070af4..5596bbb27ccfd47995d93004401f19231f9b48e8 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2661,
 /**/
     2660,
 /**/