summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-11-26 16:53:16 +0100
committerBram Moolenaar <Bram@vim.org>2017-11-26 16:53:16 +0100
commita3571ebef5a2969d16e3e202ec4bca8858aca6ba (patch)
treee3fa434b1f473c4fd5d1167ee0ff4a343eae1c2e
parentc41838aa01ef99540e2737c42e9b1283e3da5e26 (diff)
patch 8.0.1346: crash when passing 50 char string to balloon_split()v8.0.1346
Problem: Crash when passing 50 char string to balloon_split(). Solution: Fix off-by-one error.
-rw-r--r--src/popupmnu.c2
-rw-r--r--src/testdir/test_popup.vim4
-rw-r--r--src/version.c2
3 files changed, 7 insertions, 1 deletions
diff --git a/src/popupmnu.c b/src/popupmnu.c
index 77460a1a6c..447f789e59 100644
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -836,7 +836,7 @@ split_message(char_u *mesg, pumitem_T **array)
item->bytelen = p - item->start;
if (item->cells > max_cells)
max_cells = item->cells;
- long_item_count += item->cells / BALLOON_MIN_WIDTH;
+ long_item_count += (item->cells - 1) / BALLOON_MIN_WIDTH;
}
height = 2 + ga.ga_len;
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index 2bb9b32c49..6250c1b8f2 100644
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -708,6 +708,10 @@ func Test_balloon_split()
return
endif
call assert_equal([
+ \ 'tempname: 0x555555e380a0 "/home/mool/.viminfz.tmp"',
+ \ ], balloon_split(
+ \ 'tempname: 0x555555e380a0 "/home/mool/.viminfz.tmp"'))
+ call assert_equal([
\ 'one two three four one two three four one two thre',
\ 'e four',
\ ], balloon_split(
diff --git a/src/version.c b/src/version.c
index 5b3b7977ba..55754faa02 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1346,
+/**/
1345,
/**/
1344,