summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-12-07 17:47:22 +0100
committerBram Moolenaar <Bram@vim.org>2019-12-07 17:47:22 +0100
commit6b649ac4fd0cbf88c5a05d82ad151d0ce980916a (patch)
tree3e59a10e5b1b750270254df7b484d8956b75b766
parent1f9a028def327bd9bbfef375cb1283cd51e04678 (diff)
downloadvim-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.c4
-rw-r--r--src/register.c4
-rw-r--r--src/term.c2
-rw-r--r--src/version.c2
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,