diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-02-14 23:23:19 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-02-14 23:23:19 +0100 |
commit | 81aa0f56f8be6922730f1ca368d6c64661dc97a3 (patch) | |
tree | 26dae5cbb07a1815da3e45a93e2b500d5a3132ee /src | |
parent | 29ae223ddcfcbbce46c7e1f4e8fa71b8f2674271 (diff) | |
download | vim-git-81aa0f56f8be6922730f1ca368d6c64661dc97a3.tar.gz |
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)
Diffstat (limited to 'src')
-rw-r--r-- | src/terminal.c | 3 | ||||
-rw-r--r-- | src/testdir/test_terminal.vim | 24 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 25 insertions, 4 deletions
diff --git a/src/terminal.c b/src/terminal.c index f2f4ec0f1..e2ae2f600 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 b24dbc997..ba06f3623 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 e3ec2151a..d0857e7f9 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, |