mirror of
https://github.com/vim/vim.git
synced 2025-09-27 04:14:06 -04:00
patch 8.2.1353: crash when drawing double-wide character in terminal window
Problem: Crash when drawing double-wide character in terminal window. (Masato Nishihata) Solution: Check getcell() returning NULL. (issue #6141)
This commit is contained in:
@@ -186,7 +186,12 @@ static int putglyph(VTermGlyphInfo *info, VTermPos pos, void *user)
|
||||
cell->chars[i] = 0;
|
||||
|
||||
for(col = 1; col < info->width; col++)
|
||||
getcell(screen, pos.row, pos.col + col)->chars[0] = (uint32_t)-1;
|
||||
{
|
||||
ScreenCell *onecell = getcell(screen, pos.row, pos.col + col);
|
||||
if (onecell == NULL)
|
||||
break;
|
||||
onecell->chars[0] = (uint32_t)-1;
|
||||
}
|
||||
|
||||
rect.start_row = pos.row;
|
||||
rect.end_row = pos.row+1;
|
||||
|
@@ -258,6 +258,21 @@ func Test_terminal_scrape_multibyte()
|
||||
call delete('Xtext')
|
||||
endfunc
|
||||
|
||||
func Test_terminal_one_column()
|
||||
" This creates a terminal, displays a double-wide character and makes the
|
||||
" window one column wide. This used to cause a crash.
|
||||
let width = &columns
|
||||
botright vert term
|
||||
let buf = bufnr('$')
|
||||
call term_wait(buf, 100)
|
||||
exe "set columns=" .. (width / 2)
|
||||
redraw
|
||||
call term_sendkeys(buf, "キ")
|
||||
call term_wait(buf, 10)
|
||||
exe "set columns=" .. width
|
||||
exe buf . 'bwipe!'
|
||||
endfunc
|
||||
|
||||
func Test_terminal_scroll()
|
||||
call writefile(range(1, 200), 'Xtext')
|
||||
if has('win32')
|
||||
|
@@ -754,6 +754,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1353,
|
||||
/**/
|
||||
1352,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user