[Bf-blender-cvs] [07df76496d2] blender-v2.82-release: Fix error showing viewport units

Campbell Barton noreply at git.blender.org
Sun Feb 2 08:08:42 CET 2020


Commit: 07df76496d23c81f035939a86ab7fe8057bdaf35
Author: Campbell Barton
Date:   Sun Feb 2 17:54:07 2020 +1100
Branches: blender-v2.82-release
https://developer.blender.org/rB07df76496d23c81f035939a86ab7fe8057bdaf35

Fix error showing viewport units

Out of bounds buffer unit-system index with zoomed out viewport.

===================================================================

M	source/blender/editors/space_view3d/view3d_draw.c

===================================================================

diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index bb605c6cbae..0e5592abfd2 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -870,6 +870,7 @@ void ED_view3d_grid_steps(Scene *scene,
   int i, len;
   bUnit_GetSystem(scene->unit.system, B_UNIT_LENGTH, &usys, &len);
   float grid_scale = v3d->grid;
+  BLI_assert(STEPS_LEN >= len);
 
   if (usys) {
     if (rv3d->view == RV3D_VIEW_USER) {
@@ -903,7 +904,6 @@ void ED_view3d_grid_steps(Scene *scene,
     }
   }
 }
-#undef STEPS_LEN
 
 /* Simulates the grid scale that is actually viewed.
  * The actual code is seen in `object_grid_frag.glsl` (see `grid_res`).
@@ -919,10 +919,11 @@ float ED_view3d_grid_view_scale(Scene *scene,
     /* `0.38` was a value visually obtained in order to get a snap distance
      * that matches previous versions Blender.*/
     float min_dist = 0.38f * (rv3d->dist / v3d->lens);
-    float grid_steps[8];
+    float grid_steps[STEPS_LEN];
     ED_view3d_grid_steps(scene, v3d, rv3d, grid_steps);
+    /* Skip last item, in case the 'mid_dist' is greater than the largest unit. */
     int i;
-    for (i = 0; i < ARRAY_SIZE(grid_steps); i++) {
+    for (i = 0; i < ARRAY_SIZE(grid_steps) - 1; i++) {
       grid_scale = grid_steps[i];
       if (grid_scale > min_dist) {
         break;
@@ -946,6 +947,8 @@ float ED_view3d_grid_view_scale(Scene *scene,
   return grid_scale;
 }
 
+#undef STEPS_LEN
+
 static void draw_view_axis(RegionView3D *rv3d, const rcti *rect)
 {
   const float k = U.rvisize * U.pixelsize; /* axis size */



More information about the Bf-blender-cvs mailing list