Fix T72200: Split Quad View Region Crash
authorJeroen Bakker <jbakker>
Tue, 14 Jan 2020 15:29:45 +0000 (16:29 +0100)
committerJeroen Bakker <jeroen@blender.org>
Tue, 14 Jan 2020 15:30:32 +0000 (16:30 +0100)
When splitting a Quad View by dragging a corner an quad area can become
negative size because of a one pixel offset to calculate the start of
the area.

This patch solves this to make sure that there are no negative areas. By
adapting the `ARegion.winrct`.

Reviewed By: Severin

Differential Revision: https://developer.blender.org/D6579

source/blender/editors/screen/area.c

index 98bee1560900ef39f1582305ac4a28c3b4fa000b..29626fb6a8f25d964cc799b1afdc093cc5cee2bf 100644 (file)
@@ -1437,6 +1437,11 @@ static void region_rect_recursive(
         BLI_rcti_init(remainder, 0, 0, 0, 0);
       }
 
+      /* Fix any negative dimensions. This can happen when a quad split 3d view gets to small. (see
+       * T72200). BLI_rcti_init() sanitizes, making sure min values are <= max values. */
+      BLI_rcti_init(
+          &ar->winrct, ar->winrct.xmin, ar->winrct.xmax, ar->winrct.ymin, ar->winrct.ymax);
+
       quad++;
     }
   }
@@ -2897,7 +2902,7 @@ void ED_region_info_draw(ARegion *ar,
                          float fill_color[4],
                          const bool full_redraw)
 {
-  ED_region_info_draw_multiline(ar, (const char *[2]){text, NULL}, fill_color, full_redraw);
+  ED_region_info_draw_multiline(ar, (const char * [2]){text, NULL}, fill_color, full_redraw);
 }
 
 #define MAX_METADATA_STR 1024