diff options
author | erw7 <erw7.github@gmail.com> | 2020-07-29 04:36:17 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-29 04:36:17 +0900 |
commit | 5f5bd576e5395ef0cd6198f16d10edc1ff4bbe76 (patch) | |
tree | cc4551d4868461f82bbb37130fb32ab0fda1fb6c /src | |
parent | 33eaa171fad0c8b729b0db14eef3173dbd8c950b (diff) | |
parent | b6b270b28fa92d5bedca397313b5370893fe0e3f (diff) | |
download | rneovim-5f5bd576e5395ef0cd6198f16d10edc1ff4bbe76.tar.gz rneovim-5f5bd576e5395ef0cd6198f16d10edc1ff4bbe76.tar.bz2 rneovim-5f5bd576e5395ef0cd6198f16d10edc1ff4bbe76.zip |
Merge pull request #12687 from erw7/fix-terminal-overflow
terminal: fix terminal attribute overflow
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/screen.c | 6 | ||||
-rw-r--r-- | src/nvim/screen.h | 3 | ||||
-rw-r--r-- | src/nvim/terminal.c | 1 |
3 files changed, 7 insertions, 3 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c index ba52f5b489..7bed747e9a 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -2804,8 +2804,8 @@ win_line ( off += col; } - // wont highlight after 1024 columns - int term_attrs[1024] = {0}; + // wont highlight after TERM_ATTRS_MAX columns + int term_attrs[TERM_ATTRS_MAX] = { 0 }; if (wp->w_buffer->terminal) { terminal_get_line_attributes(wp->w_buffer->terminal, wp, lnum, term_attrs); extra_check = true; @@ -4172,7 +4172,7 @@ win_line ( int n = wp->w_p_rl ? -1 : 1; while (col >= 0 && col < grid->Columns) { schar_from_ascii(linebuf_char[off], ' '); - linebuf_attr[off] = term_attrs[vcol]; + linebuf_attr[off] = vcol >= TERM_ATTRS_MAX ? 0 : term_attrs[vcol]; off += n; vcol += n; col += n; diff --git a/src/nvim/screen.h b/src/nvim/screen.h index 9267672cf1..5f339b9ae2 100644 --- a/src/nvim/screen.h +++ b/src/nvim/screen.h @@ -32,6 +32,9 @@ EXTERN ScreenGrid default_grid INIT(= SCREEN_GRID_INIT); #define DEFAULT_GRID_HANDLE 1 // handle for the default_grid +// Maximum columns for terminal highlight attributes +#define TERM_ATTRS_MAX 1024 + /// Status line click definition typedef struct { enum { diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c index 6a13341a89..52d3eef810 100644 --- a/src/nvim/terminal.c +++ b/src/nvim/terminal.c @@ -607,6 +607,7 @@ void terminal_get_line_attributes(Terminal *term, win_T *wp, int linenr, return; } + width = MIN(TERM_ATTRS_MAX, width); for (int col = 0; col < width; col++) { VTermScreenCell cell; bool color_valid = fetch_cell(term, row, col, &cell); |