aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2019-02-19 17:46:21 +0100
committerBjörn Linse <bjorn.linse@gmail.com>2019-02-19 17:46:21 +0100
commitb98be541481efc558f2b90b41f9fc02a0b728d39 (patch)
treeccf7966c4df2201407699de33733b3333371805f /src
parentf1843c0035769637daab88aa476753ce54d41387 (diff)
downloadrneovim-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.c7
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;