diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2019-02-19 17:46:21 +0100 |
---|---|---|
committer | Björn Linse <bjorn.linse@gmail.com> | 2019-02-19 17:46:21 +0100 |
commit | b98be541481efc558f2b90b41f9fc02a0b728d39 (patch) | |
tree | ccf7966c4df2201407699de33733b3333371805f /src | |
parent | f1843c0035769637daab88aa476753ce54d41387 (diff) | |
download | rneovim-b98be541481efc558f2b90b41f9fc02a0b728d39.tar.gz rneovim-b98be541481efc558f2b90b41f9fc02a0b728d39.tar.bz2 rneovim-b98be541481efc558f2b90b41f9fc02a0b728d39.zip |
screen: don't crash when drawing popupmenu with 'rightleft' option
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/screen.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c index d095bdb7c8..b974a2d417 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -5338,10 +5338,11 @@ void screen_puts_len(char_u *text, int textlen, int row, int col, int attr) schar_from_ascii(ScreenLines[off - 1], ' '); ScreenAttrs[off - 1] = 0; // redraw the previous cell, make it empty - if (put_dirty_first == -1) { + if (put_dirty_first == -1 || col-1 < put_dirty_first) { put_dirty_first = col-1; } put_dirty_last = col+1; + put_dirty_last = MAX(put_dirty_last, col+1); // force the cell at "col" to be redrawn force_redraw_next = true; } @@ -5422,10 +5423,10 @@ void screen_puts_len(char_u *text, int textlen, int row, int col, int attr) ScreenLines[off + 1][0] = 0; ScreenAttrs[off + 1] = attr; } - if (put_dirty_first == -1) { + if (put_dirty_first == -1 || col < put_dirty_first) { put_dirty_first = col; } - put_dirty_last = col+mbyte_cells; + put_dirty_last = MAX(put_dirty_last, col+mbyte_cells); } off += mbyte_cells; |