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;
|
cell->chars[i] = 0;
|
||||||
|
|
||||||
for(col = 1; col < info->width; col++)
|
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.start_row = pos.row;
|
||||||
rect.end_row = pos.row+1;
|
rect.end_row = pos.row+1;
|
||||||
|
@@ -258,6 +258,21 @@ func Test_terminal_scrape_multibyte()
|
|||||||
call delete('Xtext')
|
call delete('Xtext')
|
||||||
endfunc
|
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()
|
func Test_terminal_scroll()
|
||||||
call writefile(range(1, 200), 'Xtext')
|
call writefile(range(1, 200), 'Xtext')
|
||||||
if has('win32')
|
if has('win32')
|
||||||
|
@@ -754,6 +754,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1353,
|
||||||
/**/
|
/**/
|
||||||
1352,
|
1352,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user