Commit: 6ce06957c9bf9c752f0a7ee2cb186948d0d67983
Author: Campbell Barton
Date:   Wed Feb 17 15:12:39 2021 +1100
Branches: blender-v2.92-release
https://developer.blender.org/rB6ce06957c9bf9c752f0a7ee2cb186948d0d67983

Fix T85680: Crash displaying UV stretch/area with modifiers

This uses the same logic as drawing UV's,
where non-bmesh defaults to mesh.

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

M       source/blender/draw/intern/draw_cache_extract_mesh.c

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

diff --git a/source/blender/draw/intern/draw_cache_extract_mesh.c 
b/source/blender/draw/intern/draw_cache_extract_mesh.c
index 9e2ac26f9f0..40d7614f93f 100644
--- a/source/blender/draw/intern/draw_cache_extract_mesh.c
+++ b/source/blender/draw/intern/draw_cache_extract_mesh.c
@@ -3903,7 +3903,8 @@ static void mesh_stretch_area_finish(const MeshRenderData 
*mr,
       area_ratio[f] = area_ratio_get(area, uvarea);
     }
   }
-  else if (mr->extract_type == MR_EXTRACT_MAPPED) {
+  else {
+    BLI_assert(ELEM(mr->extract_type, MR_EXTRACT_MAPPED, MR_EXTRACT_MESH));
     const MLoopUV *uv_data = CustomData_get_layer(&mr->me->ldata, CD_MLOOPUV);
     const MPoly *mp = mr->mpoly;
     for (int mp_index = 0; mp_index < mr->poly_len; mp_index++, mp++) {
@@ -3914,10 +3915,6 @@ static void mesh_stretch_area_finish(const 
MeshRenderData *mr,
       area_ratio[mp_index] = area_ratio_get(area, uvarea);
     }
   }
-  else {
-    /* Should not happen. */
-    BLI_assert(0);
-  }
 
   cache->tot_area = tot_area;
   cache->tot_uv_area = tot_uv_area;
@@ -3942,7 +3939,8 @@ static void mesh_stretch_area_finish(const MeshRenderData 
*mr,
       }
     }
   }
-  else if (mr->extract_type == MR_EXTRACT_MAPPED) {
+  else {
+    BLI_assert(ELEM(mr->extract_type, MR_EXTRACT_MAPPED, MR_EXTRACT_MESH));
     const MPoly *mp = mr->mpoly;
     for (int mp_index = 0, l_index = 0; mp_index < mr->poly_len; mp_index++, 
mp++) {
       for (int i = 0; i < mp->totloop; i++, l_index++) {
@@ -3950,10 +3948,6 @@ static void mesh_stretch_area_finish(const 
MeshRenderData *mr,
       }
     }
   }
-  else {
-    /* Should not happen. */
-    BLI_assert(0);
-  }
 
   MEM_freeN(area_ratio);
 }
@@ -4047,11 +4041,9 @@ static void *extract_stretch_angle_init(const 
MeshRenderData *mr,
   if (mr->extract_type == MR_EXTRACT_BMESH) {
     data->cd_ofs = CustomData_get_offset(&mr->bm->ldata, CD_MLOOPUV);
   }
-  else if (mr->extract_type == MR_EXTRACT_MAPPED) {
-    data->luv = CustomData_get_layer(&mr->me->ldata, CD_MLOOPUV);
-  }
   else {
-    BLI_assert(0);
+    BLI_assert(ELEM(mr->extract_type, MR_EXTRACT_MAPPED, MR_EXTRACT_MESH));
+    data->luv = CustomData_get_layer(&mr->me->ldata, CD_MLOOPUV);
   }
   return data;
 }

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to