diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-12-07 17:47:22 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-12-07 17:47:22 +0100 |
commit | 6b649ac4fd0cbf88c5a05d82ad151d0ce980916a (patch) | |
tree | 3e59a10e5b1b750270254df7b484d8956b75b766 | |
parent | 1f9a028def327bd9bbfef375cb1283cd51e04678 (diff) | |
download | vim-git-6b649ac4fd0cbf88c5a05d82ad151d0ce980916a.tar.gz |
patch 8.1.2406: leaking memory in test_paste and test_registersv8.1.2406
Problem: Leaking memory in test_paste and test_registers.
Solution: Free the old title. Don't copy expr_line.
-rw-r--r-- | src/os_unix.c | 4 | ||||
-rw-r--r-- | src/register.c | 4 | ||||
-rw-r--r-- | src/term.c | 2 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 10 insertions, 2 deletions
diff --git a/src/os_unix.c b/src/os_unix.c index 90c5aed97..7e7820934 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -1963,6 +1963,10 @@ get_x11_thing( retval = TRUE; if (!test_only) { + if (get_title) + vim_free(oldtitle); + else + vim_free(oldicon); if (text_prop.encoding == XA_STRING && !has_mbyte) { if (get_title) diff --git a/src/register.c b/src/register.c index a948bebda..24e4b992a 100644 --- a/src/register.c +++ b/src/register.c @@ -2872,9 +2872,9 @@ write_reg_contents_ex( p = vim_strnsave(str, (int)len); if (p == NULL) return; - if (must_append) + if (must_append && expr_line != NULL) { - s = concat_str(get_expr_line_src(), p); + s = concat_str(expr_line, p); vim_free(p); p = s; } diff --git a/src/term.c b/src/term.c index 57384f4d8..b0ab7c634 100644 --- a/src/term.c +++ b/src/term.c @@ -2106,6 +2106,8 @@ tgetent_error(char_u *tbuf, char_u *term) { int i; + // Note: Valgrind may report a leak here, because the library keeps one + // buffer around that we can't ever free. i = TGETENT(tbuf, term); if (i < 0 // -1 is always an error # ifdef TGETENT_ZERO_ERR diff --git a/src/version.c b/src/version.c index 89896e5a1..c03c3c02a 100644 --- a/src/version.c +++ b/src/version.c @@ -743,6 +743,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2406, +/**/ 2405, /**/ 2404, |