# HG changeset patch # User Bram Moolenaar # Date 1550183405 -3600 # Node ID 8f112782a2e9f87817ee73a5e4fdd71f4490ceb2 # Parent 9186eec7512b34eae58e37ef4f5f72ecf7d5ac0e patch 8.1.0921: terminal test sometimes fails; using memory after free commit https://github.com/vim/vim/commit/81aa0f56f8be6922730f1ca368d6c64661dc97a3 Author: Bram Moolenaar Date: Thu Feb 14 23:23:19 2019 +0100 patch 8.1.0921: terminal test sometimes fails; using memory after free 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) diff --git a/src/terminal.c b/src/terminal.c --- a/src/terminal.c +++ b/src/terminal.c @@ -4735,7 +4735,6 @@ term_load_dump(typval_T *argvars, typval p2 += len2; /* TODO: handle different width */ } - vim_free(line1); while (col < width) { @@ -4753,6 +4752,8 @@ term_load_dump(typval_T *argvars, typval } ++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 --- 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, "\") @@ -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 --- 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,