summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-04-07 13:08:00 +0100
committerBram Moolenaar <Bram@vim.org>2022-04-07 13:08:00 +0100
commitcb49a1d934d38cbc0d445af59b71ffe45cbcae75 (patch)
tree3832b81b329f5c2c40d1dbac22a9ba540bef5257
parent3506cf34c17c5eae6c2d1317db1fcd5a8493c288 (diff)
downloadvim-git-cb49a1d934d38cbc0d445af59b71ffe45cbcae75.tar.gz
patch 8.2.4703: memory leak in handling 'cinscopedecls'v8.2.4703
Problem: Memory leak in handling 'cinscopedecls'. Solution: Free the memory before returning.
-rw-r--r--src/cindent.c35
-rw-r--r--src/version.c2
2 files changed, 21 insertions, 16 deletions
diff --git a/src/cindent.c b/src/cindent.c
index a22db9560..268d274ae 100644
--- a/src/cindent.c
+++ b/src/cindent.c
@@ -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;
}
/*
diff --git a/src/version.c b/src/version.c
index 3cf9d188f..bbbfeb713 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4703,
+/**/
4702,
/**/
4701,