0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

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)
This commit is contained in:
Bram Moolenaar 2019-02-14 23:23:19 +01:00
parent 29ae223ddc
commit 81aa0f56f8
3 changed files with 25 additions and 4 deletions

View File

@ -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)

View File

@ -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()

View File

@ -783,6 +783,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
921,
/**/
920,
/**/