summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-11-22 22:22:11 +0100
committerBram Moolenaar <Bram@vim.org>2017-11-22 22:22:11 +0100
commit3679c17917d7ff22e836982c81e5816bd07451dd (patch)
tree9dd557f0dab8d270837a6be109d2612ea7219f9f
parenta2a80162deb1e96e16b097dfe48b61b6eb0824bf (diff)
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.c2
-rw-r--r--src/window.c7
2 files changed, 6 insertions, 3 deletions
diff --git a/src/version.c b/src/version.c
index ebc57ed364..cda1ef369a 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 97c5dc3c36..7bc3b9f489 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;
}