0
0
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:
Bram Moolenaar
2020-08-02 15:05:05 +02:00
parent ad486a0f0d
commit 8b89614e69
3 changed files with 23 additions and 1 deletions

View File

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

View File

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

View File

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