]> granicus.if.org Git - vim/commitdiff
patch 8.2.4663: occasional crash when running the GUI tests v8.2.4663
authorBram Moolenaar <Bram@vim.org>
Fri, 1 Apr 2022 18:44:47 +0000 (19:44 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 1 Apr 2022 18:44:47 +0000 (19:44 +0100)
Problem:    Occasional crash when running the GUI tests.
Solution:   Check that the line index is not too high. (closes #8681)

src/screen.c
src/version.c

index db1a763aae08891f83dc9c0d3fabe78e38eab98d..3713f49fd6ab0035050f27aa1683601dbed3ac76 100644 (file)
@@ -3634,9 +3634,9 @@ win_rest_invalid(win_T *wp)
 
 /*
  * insert lines on the screen and update ScreenLines[]
- * 'end' is the line after the scrolled part. Normally it is Rows.
- * When scrolling region used 'off' is the offset from the top for the region.
- * 'row' and 'end' are relative to the start of the region.
+ * "end" is the line after the scrolled part. Normally it is Rows.
+ * When scrolling region used "off" is the offset from the top for the region.
+ * "row" and "end" are relative to the start of the region.
  *
  * return FAIL for failure, OK for success.
  */
@@ -3661,14 +3661,15 @@ screen_ins_lines(
     /*
      * FAIL if
      * - there is no valid screen
-     * - the screen has to be redrawn completely
      * - the line count is less than one
      * - the line count is more than 'ttyscroll'
+     * - "end" is more than "Rows" (safety check, should not happen)
      * - redrawing for a callback and there is a modeless selection
      * - there is a popup window
      */
      if (!screen_valid(TRUE)
             || line_count <= 0 || line_count > p_ttyscroll
+            || end > Rows
 #ifdef FEAT_CLIPBOARD
             || (clip_star.state != SELECT_CLEARED
                                                 && redrawing_for_callback > 0)
@@ -3896,13 +3897,15 @@ screen_del_lines(
      * - the screen has to be redrawn completely
      * - the line count is less than one
      * - the line count is more than 'ttyscroll'
+     * - "end" is more than "Rows" (safety check, should not happen)
      * - redrawing for a callback and there is a modeless selection
      */
-    if (!screen_valid(TRUE) || line_count <= 0
-                                       || (!force && line_count > p_ttyscroll)
+    if (!screen_valid(TRUE)
+           || line_count <= 0
+           || (!force && line_count > p_ttyscroll)
+           || end > Rows
 #ifdef FEAT_CLIPBOARD
-            || (clip_star.state != SELECT_CLEARED
-                                                && redrawing_for_callback > 0)
+           || (clip_star.state != SELECT_CLEARED && redrawing_for_callback > 0)
 #endif
        )
        return FAIL;
index d3be7a85362e7a6b26ebcfe5116ba99d28f93429..72ba02c487392a9af3586aa0f3d7f00435985429 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4663,
 /**/
     4662,
 /**/