diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-11-26 16:53:16 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-11-26 16:53:16 +0100 |
commit | a3571ebef5a2969d16e3e202ec4bca8858aca6ba (patch) | |
tree | e3fa434b1f473c4fd5d1167ee0ff4a343eae1c2e | |
parent | c41838aa01ef99540e2737c42e9b1283e3da5e26 (diff) | |
download | vim-git-a3571ebef5a2969d16e3e202ec4bca8858aca6ba.tar.gz |
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.c | 2 | ||||
-rw-r--r-- | src/testdir/test_popup.vim | 4 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 7 insertions, 1 deletions
diff --git a/src/popupmnu.c b/src/popupmnu.c index 77460a1a6..447f789e5 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 2bb9b32c4..6250c1b8f 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 5b3b7977b..55754faa0 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, |