]> granicus.if.org Git - vim/commitdiff
patch 8.2.4703: memory leak in handling 'cinscopedecls' v8.2.4703
authorBram Moolenaar <Bram@vim.org>
Thu, 7 Apr 2022 12:08:00 +0000 (13:08 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 7 Apr 2022 12:08:00 +0000 (13:08 +0100)
Problem:    Memory leak in handling 'cinscopedecls'.
Solution:   Free the memory before returning.

src/cindent.c
src/version.c

index a22db9560e832f96a6d3d2712300057303e97e6d..268d274aec5d57c90b05b0e14363aee7530e88a8 100644 (file)
@@ -425,32 +425,35 @@ cin_islabel_skip(char_u **s)
     static int
 cin_isscopedecl(char_u *p)
 {
-    size_t cinsd_len;
-    char_u *cinsd_buf;
-    char_u *cinsd;
-    size_t len;
-    char_u *skip;
-    char_u *s = cin_skipcomment(p);
+    size_t  cinsd_len;
+    char_u  *cinsd_buf;
+    char_u  *cinsd;
+    size_t  len;
+    char_u  *skip;
+    char_u  *s = cin_skipcomment(p);
+    int            found = FALSE;
 
     cinsd_len = STRLEN(curbuf->b_p_cinsd) + 1;
     cinsd_buf = alloc(cinsd_len);
-    if (cinsd_buf != NULL)
+    if (cinsd_buf == NULL)
+       return FALSE;
+
+    for (cinsd = curbuf->b_p_cinsd; *cinsd; )
     {
-       for (cinsd = curbuf->b_p_cinsd; *cinsd; )
+       len = copy_option_part(&cinsd, cinsd_buf, cinsd_len, ",");
+       if (STRNCMP(s, cinsd_buf, len) == 0)
        {
-           len = copy_option_part(&cinsd, cinsd_buf, cinsd_len, ",");
-           if (STRNCMP(s, cinsd_buf, len) == 0)
+           skip = cin_skipcomment(s + len);
+           if (*skip == ':' && skip[1] != ':')
            {
-               skip = cin_skipcomment(s + len);
-               if (*skip == ':' && skip[1] != ':')
-                   return TRUE;
+               found = TRUE;
+               break;
            }
        }
-
-       vim_free(cinsd_buf);
     }
 
-    return FALSE;
+    vim_free(cinsd_buf);
+    return found;
 }
 
 /*
index 3cf9d188f0f8d661aa80219a3cd972674c7714f9..bbbfeb713bb3dcab1d8554939d692b4688906c70 100644 (file)
@@ -746,6 +746,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4703,
 /**/
     4702,
 /**/