# HG changeset patch # User Bram Moolenaar # Date 1575738003 -3600 # Node ID 8dabdfc7c7990a19937f518161596113c30028b1 # Parent 00e789ecc516ff2d11fd7bc16713a19f944a04ac patch 8.1.2406: leaking memory in test_paste and test_registers Commit: https://github.com/vim/vim/commit/6b649ac4fd0cbf88c5a05d82ad151d0ce980916a Author: Bram Moolenaar Date: Sat Dec 7 17:47:22 2019 +0100 patch 8.1.2406: leaking memory in test_paste and test_registers Problem: Leaking memory in test_paste and test_registers. Solution: Free the old title. Don't copy expr_line. diff --git a/src/os_unix.c b/src/os_unix.c --- 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 --- 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 --- 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 --- 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,