diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-11-22 22:22:11 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-11-22 22:22:11 +0100 |
commit | 3679c17917d7ff22e836982c81e5816bd07451dd (patch) | |
tree | 9dd557f0dab8d270837a6be109d2612ea7219f9f | |
parent | a2a80162deb1e96e16b097dfe48b61b6eb0824bf (diff) | |
download | vim-git-3679c17917d7ff22e836982c81e5816bd07451dd.tar.gz |
patch 8.0.1331: possible crash when window can be zero lines highv8.0.1331
Problem: Possible crash when window can be zero lines high. (Joseph
Dornisch)
Solution: Only set w_fraction if the window is at least two lines high.
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/window.c | 7 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/version.c b/src/version.c index ebc57ed36..cda1ef369 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 */ /**/ + 1331, +/**/ 1330, /**/ 1329, diff --git a/src/window.c b/src/window.c index 97c5dc3c3..7bc3b9f48 100644 --- a/src/window.c +++ b/src/window.c @@ -1081,8 +1081,7 @@ win_split_ins( /* Set w_fraction now so that the cursor keeps the same relative * vertical position. */ - if (oldwin->w_height > 0) - set_fraction(oldwin); + set_fraction(oldwin); wp->w_fraction = oldwin->w_fraction; if (flags & WSP_VERT) @@ -5682,11 +5681,13 @@ win_drag_vsep_line(win_T *dragwin, int offset) /* * Set wp->w_fraction for the current w_wrow and w_height. + * Has no effect when the window is less than two lines. */ void set_fraction(win_T *wp) { - wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT + if (wp->w_height > 1) + wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT + wp->w_height / 2) / (long)wp->w_height; } |