0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 8.2.4703: memory leak in handling 'cinscopedecls'

Problem:    Memory leak in handling 'cinscopedecls'.
Solution:   Free the memory before returning.
This commit is contained in:
Bram Moolenaar 2022-04-07 13:08:00 +01:00
parent 3506cf34c1
commit cb49a1d934
2 changed files with 21 additions and 16 deletions

View File

@ -425,32 +425,35 @@ cin_islabel_skip(char_u **s)
static int static int
cin_isscopedecl(char_u *p) cin_isscopedecl(char_u *p)
{ {
size_t cinsd_len; size_t cinsd_len;
char_u *cinsd_buf; char_u *cinsd_buf;
char_u *cinsd; char_u *cinsd;
size_t len; size_t len;
char_u *skip; char_u *skip;
char_u *s = cin_skipcomment(p); char_u *s = cin_skipcomment(p);
int found = FALSE;
cinsd_len = STRLEN(curbuf->b_p_cinsd) + 1; cinsd_len = STRLEN(curbuf->b_p_cinsd) + 1;
cinsd_buf = alloc(cinsd_len); 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, ","); skip = cin_skipcomment(s + len);
if (STRNCMP(s, cinsd_buf, len) == 0) if (*skip == ':' && skip[1] != ':')
{ {
skip = cin_skipcomment(s + len); found = TRUE;
if (*skip == ':' && skip[1] != ':') break;
return TRUE;
} }
} }
vim_free(cinsd_buf);
} }
return FALSE; vim_free(cinsd_buf);
return found;
} }
/* /*

View File

@ -746,6 +746,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
4703,
/**/ /**/
4702, 4702,
/**/ /**/