From 3679c17917d7ff22e836982c81e5816bd07451dd Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 22 Nov 2017 22:22:11 +0100 Subject: patch 8.0.1331: possible crash when window can be zero lines high 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. --- src/version.c | 2 ++ src/window.c | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/version.c b/src/version.c index ebc57ed364..cda1ef369a 100644 --- a/src/version.c +++ b/src/version.c @@ -771,6 +771,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1331, /**/ 1330, /**/ 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; } -- cgit v1.2.3