]> granicus.if.org Git - vim/commitdiff
patch 8.2.2205: Vim9: memory leak when parsing lambda fails v8.2.2205
authorBram Moolenaar <Bram@vim.org>
Thu, 24 Dec 2020 15:06:00 +0000 (16:06 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 24 Dec 2020 15:06:00 +0000 (16:06 +0100)
Problem:    Vim9: memory leak when parsing lambda fails.
Solution:   Clear growarrays.

src/userfunc.c
src/version.c

index 4da1dc03863bdfba85fa79e14c0b9c2dba900343..f9f302a17060c573a1189c21d092c96b4124d3d7 100644 (file)
@@ -523,7 +523,11 @@ get_lambda_tv(
            types_optional ? &argtypes : NULL, types_optional,
                                                 NULL, NULL, TRUE, NULL, NULL);
     if (ret == FAIL || skip_arrow(s, equal_arrow) == NULL)
+    {
+       if (types_optional)
+           ga_clear_strings(&argtypes);
        return NOTDONE;
+    }
 
     // Parse the arguments again.
     if (evaluate)
@@ -535,7 +539,11 @@ get_lambda_tv(
            types_optional ? &argtypes : NULL, types_optional,
                                            &varargs, NULL, FALSE, NULL, NULL);
     if (ret == FAIL || (*arg = skip_arrow(*arg, equal_arrow)) == NULL)
+    {
+       if (types_optional)
+           ga_clear_strings(&argtypes);
        return NOTDONE;
+    }
 
     // Set up a flag for checking local variables and arguments.
     if (evaluate)
index df91534a8416c554dee717a85f1598e5677b21fa..5420862e2c6dc0a6cb9738b730e8f39b32ae5998 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2205,
 /**/
     2204,
 /**/