]> granicus.if.org Git - vim/commitdiff
patch 8.0.1331: possible crash when window can be zero lines high v8.0.1331
authorBram Moolenaar <Bram@vim.org>
Wed, 22 Nov 2017 21:22:11 +0000 (22:22 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 22 Nov 2017 21:22:11 +0000 (22:22 +0100)
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
src/window.c

index ebc57ed364b5baaf05053dab86836c0c9f4f976d..cda1ef369a81633c6d57acfb7694afa4b398f4bf 100644 (file)
@@ -771,6 +771,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1331,
 /**/
     1330,
 /**/
index 97c5dc3c36e26ddfc9e98dbb298680c61bc5ceb4..7bc3b9f48985e800d46cc6dae630c61d8d879c5e 100644 (file)
@@ -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;
 }