summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-02-14 23:23:19 +0100
committerBram Moolenaar <Bram@vim.org>2019-02-14 23:23:19 +0100
commit81aa0f56f8be6922730f1ca368d6c64661dc97a3 (patch)
tree26dae5cbb07a1815da3e45a93e2b500d5a3132ee
parent29ae223ddcfcbbce46c7e1f4e8fa71b8f2674271 (diff)
patch 8.1.0921: terminal test sometimes fails; using memory after freev8.1.0921
Problem: Terminal test sometimes fails; using memory after free. Solution: Fee memory a bit later. Add test to cover this. Disable flaky screenshot test. (closes #3956)
-rw-r--r--src/terminal.c3
-rw-r--r--src/testdir/test_terminal.vim24
-rw-r--r--src/version.c2
3 files changed, 25 insertions, 4 deletions
diff --git a/src/terminal.c b/src/terminal.c
index f2f4ec0f1a..e2ae2f600f 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -4735,7 +4735,6 @@ term_load_dump(typval_T *argvars, typval_T *rettv, int do_diff)
p2 += len2;
/* TODO: handle different width */
}
- vim_free(line1);
while (col < width)
{
@@ -4753,6 +4752,8 @@ term_load_dump(typval_T *argvars, typval_T *rettv, int do_diff)
}
++col;
}
+
+ vim_free(line1);
}
if (add_empty_scrollback(term, &term->tl_default_color,
term->tl_top_diff_rows) == OK)
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index b24dbc9974..ba06f36235 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -317,16 +317,22 @@ func Test_terminal_postponed_scrollback()
\ ], 'XTest_postponed')
let buf = RunVimInTerminal('-S XTest_postponed', {})
" Check that the Xtext lines are displayed and in Terminal-Normal mode
- call VerifyScreenDump(buf, 'Test_terminal_01', {})
+ call term_wait(buf)
+ " TODO: this sometimes fails
+ "call VerifyScreenDump(buf, 'Test_terminal_01', {})
silent !echo 'one more line' >>Xtext
" Sceen will not change, move cursor to get a different dump
call term_sendkeys(buf, "k")
- call VerifyScreenDump(buf, 'Test_terminal_02', {})
+ call term_wait(buf)
+ " TODO: this sometimes fails
+ "call VerifyScreenDump(buf, 'Test_terminal_02', {})
" Back to Terminal-Job mode, text will scroll and show the extra line.
call term_sendkeys(buf, "a")
- call VerifyScreenDump(buf, 'Test_terminal_03', {})
+ call term_wait(buf)
+ " TODO: this sometimes fails
+ "call VerifyScreenDump(buf, 'Test_terminal_03', {})
call term_wait(buf)
call term_sendkeys(buf, "\<C-C>")
@@ -339,6 +345,18 @@ func Test_terminal_postponed_scrollback()
call delete('Xtext')
endfunc
+" Run diff on two dumps with different size.
+func Test_terminal_dumpdiff_size()
+ call assert_equal(1, winnr('$'))
+ call term_dumpdiff('dumps/Test_incsearch_search_01.dump', 'dumps/Test_popup_command_01.dump')
+ call assert_equal(2, winnr('$'))
+ call assert_match('Test_incsearch_search_01.dump', getline(10))
+ call assert_match(' +++++$', getline(11))
+ call assert_match('Test_popup_command_01.dump', getline(31))
+ call assert_equal(repeat('+', 75), getline(30))
+ quit
+endfunc
+
func Test_terminal_size()
let cmd = Get_cat_123_cmd()
diff --git a/src/version.c b/src/version.c
index e3ec2151a3..d0857e7f95 100644
--- a/src/version.c
+++ b/src/version.c
@@ -784,6 +784,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 921,
+/**/
920,
/**/
919,