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
index 90c5aed..7e78209 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -1963,6 +1963,10 @@
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 a948beb..24e4b99 100644
--- a/src/register.c
+++ b/src/register.c
@@ -2872,9 +2872,9 @@
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 57384f4..b0ab7c6 100644
--- a/src/term.c
+++ b/src/term.c
@@ -2106,6 +2106,8 @@
{
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 89896e5..c03c3c0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2406,
+/**/
2405,
/**/
2404,