diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-04-07 13:08:00 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-04-07 13:08:00 +0100 |
commit | cb49a1d934d38cbc0d445af59b71ffe45cbcae75 (patch) | |
tree | 3832b81b329f5c2c40d1dbac22a9ba540bef5257 | |
parent | 3506cf34c17c5eae6c2d1317db1fcd5a8493c288 (diff) |
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.c | 35 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 21 insertions, 16 deletions
diff --git a/src/cindent.c b/src/cindent.c index a22db9560e..268d274aec 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 3cf9d188f0..bbbfeb713b 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, |