diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-02-17 07:12:39 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-02-17 07:12:39 +0300 |
commit | 6ce06957c9bf9c752f0a7ee2cb186948d0d67983 (patch) | |
tree | dcd6a01006520facab769bf43532831967ad5753 /source/blender/draw | |
parent | ab210098424bf53b1fdac3de2d016d3e4aa04bfe (diff) |
Fix T85680: Crash displaying UV stretch/area with modifiers
This uses the same logic as drawing UV's,
where non-bmesh defaults to mesh.
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/intern/draw_cache_extract_mesh.c | 20 |
1 files changed, 6 insertions, 14 deletions
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; } |