summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/drawscreen.c8
-rw-r--r--src/testdir/dumps/Test_display_lastline_6.dump10
-rw-r--r--src/testdir/dumps/Test_display_lastline_euro_6.dump10
-rw-r--r--src/testdir/test_display.vim4
-rw-r--r--src/version.c2
5 files changed, 30 insertions, 4 deletions
diff --git a/src/drawscreen.c b/src/drawscreen.c
index 3ad7e00cc..fe54ef5d8 100644
--- a/src/drawscreen.c
+++ b/src/drawscreen.c
@@ -2643,15 +2643,15 @@ win_update(win_T *wp)
{
int scr_row = W_WINROW(wp) + wp->w_height - 1;
int symbol = wp->w_fill_chars.lastline;
- int len;
+ int charlen;
char_u fillbuf[12]; // 2 characters of 6 bytes
- len = mb_char2bytes(symbol, &fillbuf[0]);
- len += mb_char2bytes(symbol, &fillbuf[len]);
+ charlen = mb_char2bytes(symbol, &fillbuf[0]);
+ mb_char2bytes(symbol, &fillbuf[charlen]);
// Last line isn't finished: Display "@@@" in the last screen line.
screen_puts_len(fillbuf,
- wp->w_width > 2 ? len : wp->w_width,
+ (wp->w_width > 2 ? 2 : wp->w_width) * charlen,
scr_row, wp->w_wincol, HL_ATTR(HLF_AT));
screen_fill(scr_row, scr_row + 1,
(int)wp->w_wincol + 2, (int)W_ENDCOL(wp),
diff --git a/src/testdir/dumps/Test_display_lastline_6.dump b/src/testdir/dumps/Test_display_lastline_6.dump
new file mode 100644
index 000000000..e5ede7f67
--- /dev/null
+++ b/src/testdir/dumps/Test_display_lastline_6.dump
@@ -0,0 +1,10 @@
+>a+0&#ffffff0@1||+1&&|a+0&&@2| @68
+|a| ||+1&&|b+0&&@71
+@2||+1&&|b+0&&@71
+@2||+1&&|b+0&&@55| @15
+|b@1||+1&&|~+0#4040ff13&| @70
+|b+0#0000000&@1||+1&&|~+0#4040ff13&| @70
+|b+0#0000000&@1||+1&&|~+0#4040ff13&| @70
+|@@1||+1#0000000&|~+0#4040ff13&| @70
+|<+3#0000000&|1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @40|1|,|1| @11|A|l@1
+|:+0&&|2|v|s|p|l|i|t| @66
diff --git a/src/testdir/dumps/Test_display_lastline_euro_6.dump b/src/testdir/dumps/Test_display_lastline_euro_6.dump
new file mode 100644
index 000000000..80e2cbb0f
--- /dev/null
+++ b/src/testdir/dumps/Test_display_lastline_euro_6.dump
@@ -0,0 +1,10 @@
+>a+0&#ffffff0@1||+1&&|a+0&&@2| @68
+|a| ||+1&&|b+0&&@71
+@2||+1&&|b+0&&@71
+@2||+1&&|b+0&&@55| @15
+|b@1||+1&&|~+0#4040ff13&| @70
+|b+0#0000000&@1||+1&&|~+0#4040ff13&| @70
+|b+0#0000000&@1||+1&&|~+0#4040ff13&| @70
+|€@1||+1#0000000&|~+0#4040ff13&| @70
+|<+3#0000000&|1| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @40|1|,|1| @11|A|l@1
+|:+0&&|2|v|s|p|l|i|t| @66
diff --git a/src/testdir/test_display.vim b/src/testdir/test_display.vim
index 4d2ee9f20..faed0b58e 100644
--- a/src/testdir/test_display.vim
+++ b/src/testdir/test_display.vim
@@ -419,6 +419,10 @@ func Run_Test_display_lastline(euro)
call term_sendkeys(buf, ":3split\<CR>")
call VerifyScreenDump(buf, $'Test_display_lastline_{a:euro}5', {})
+ call term_sendkeys(buf, ":close\<CR>")
+ call term_sendkeys(buf, ":2vsplit\<CR>")
+ call VerifyScreenDump(buf, $'Test_display_lastline_{a:euro}6', {})
+
call StopVimInTerminal(buf)
endfunc
diff --git a/src/version.c b/src/version.c
index 3adb51332..e9cc0ec3b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 661,
+/**/
660,
/**/
659,