aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorerw7 <erw7.github@gmail.com>2019-11-29 13:09:03 +0900
committerJustin M. Keyes <justinkz@gmail.com>2019-11-28 20:09:03 -0800
commit1bb7ea189e0b1bf402f4733d42dbf3d74ade932e (patch)
tree28c2b431f37c20774a04a22145c1e9a1d17e195f /src
parentad17ef118a533ad24a1cdc62944a08c2ab06d72f (diff)
downloadrneovim-1bb7ea189e0b1bf402f4733d42dbf3d74ade932e.tar.gz
rneovim-1bb7ea189e0b1bf402f4733d42dbf3d74ade932e.tar.bz2
rneovim-1bb7ea189e0b1bf402f4733d42dbf3d74ade932e.zip
win_line: Fix crash with 'rightleft' in :terminal #11460
fixes #11438 Backtrace: 0 schar_from_ascii ( p=0x801cc9e112c3 <error: Cannot access memory at address 0x801cc9e112c3>, c=32 ' ') at ../src/nvim/screen.c:5263 1 0x00007f31460eccc5 in win_line (wp=wp@entry=0x7fffc9df6230, lnum=lnum@entry=11, startrow=startrow@entry=10, endrow=41, nochange=false, number_only=number_only@entry=false) at ../src/nvim/screen.c:4025 2 0x00007f31460eed8e in win_update (wp=wp@entry=0x7fffc9df6230) at ../src/nvim/screen.c:1403 3 0x00007f31460f011f in update_screen (type=<optimized out>) at ../src/nvim/screen.c:502 4 0x00007f3146138ef4 in normal_redraw (s=s@entry=0x7fffd0a5f700) at ../src/nvim/normal.c:1247 5 0x00007f314613b159 in normal_check (state=0x7fffd0a5f700) at ../src/nvim/normal.c:1324 6 0x00007f31460accfe in state_enter (s=0x7fffd0a5f700) at ../src/nvim/state.c:28 7 0x00007f3146143099 in normal_enter (cmdwin=<optimized out>, noexmode=<optimized out>) at ../src/nvim/normal.c:463 8 0x00007f314618b541 in main (argc=<optimized out>, argv=<optimized out>) at ../src/nvim/main.c:580
Diffstat (limited to 'src')
-rw-r--r--src/nvim/screen.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index e9be7eed38..1d29ae064e 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -4021,10 +4021,13 @@ win_line (
if (wp->w_buffer->terminal) {
// terminal buffers may need to highlight beyond the end of the
// logical line
- while (col < grid->Columns) {
+ 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++];
- col++;
+ linebuf_attr[off] = term_attrs[vcol];
+ off += n;
+ vcol += n;
+ col += n;
}
}
grid_put_linebuf(grid, row, 0, col, grid->Columns, wp->w_p_rl, wp,