aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bürgin <676c7473@gmail.com>2015-05-03 17:03:39 +0200
committerJustin M. Keyes <justinkz@gmail.com>2015-05-16 23:46:29 -0400
commit7a7d082e125352a76f54d7fbe5fc67e9cddaf7c9 (patch)
treec7464ee01b14ffae68be9866e4be1a87d68dc98f
parentf52528477886556e4fc0fa80b6a9d0b8d08cfd9d (diff)
downloadrneovim-7a7d082e125352a76f54d7fbe5fc67e9cddaf7c9.tar.gz
rneovim-7a7d082e125352a76f54d7fbe5fc67e9cddaf7c9.tar.bz2
rneovim-7a7d082e125352a76f54d7fbe5fc67e9cddaf7c9.zip
vim-patch:7.4.562 #2593
Problem: Segfault with wide screen and error in 'rulerformat'. (Ingo Karkat) Solution: Check there is enough space. (Christian Brabandt) https://github.com/vim/vim/commit/v7-4-562
-rw-r--r--src/nvim/buffer.c5
-rw-r--r--src/nvim/screen.c3
-rw-r--r--src/nvim/version.c2
3 files changed, 8 insertions, 2 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c
index fd55e8c7a0..b4b36f7fc0 100644
--- a/src/nvim/buffer.c
+++ b/src/nvim/buffer.c
@@ -3511,6 +3511,11 @@ build_stl_str_hl (
*/
void get_rel_pos(win_T *wp, char_u *buf, int buflen)
{
+ // Need at least 3 chars for writing.
+ if (buflen < 3) {
+ return;
+ }
+
long above; /* number of lines above window */
long below; /* number of lines below window */
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index 6e3a4932a8..8b47d090d4 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -7106,7 +7106,8 @@ static void win_redr_ruler(win_T *wp, int always)
if (this_ru_col < (width + 1) / 2)
this_ru_col = (width + 1) / 2;
if (this_ru_col + o < width) {
- while (this_ru_col + o < width) {
+ // Need at least 3 chars left for get_rel_pos() + NUL.
+ while (this_ru_col + o < width && RULER_BUF_LEN > i + 4) {
if (has_mbyte)
i += (*mb_char2bytes)(fillchar, buffer + i);
else
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 4d69b9dee9..a77968db93 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -221,7 +221,7 @@ static int included_patches[] = {
565,
//564 NA
563,
- //562,
+ 562,
561,
//560 NA
559,