Fix T98558: island selection in UV editor can crash

Regression in [0]. When zoomed in, we can be within the face of an
island but too far from an edge, in this case
uv_find_nearest_face_multi_ex is used instead of
uv_find_nearest_edge_multi with the consequence that hit.l cannot be
used in uvedit_uv_select_test (it is NULL).

Instead, use uvedit_face_select_test instead in this case.

[0]: d356edf420

Reviewed By: campbellbarton

Ref D15100
This commit is contained in:
Philipp Oeser 2022-06-03 13:10:36 +10:00 committed by Campbell Barton
parent 2d9c5f3dcf
commit c4701a027f
Notes: blender-bot 2023-02-14 05:43:04 +01:00
Referenced by issue #98558, Regression: Crash when using island selection in UV editor
1 changed files with 9 additions and 2 deletions

View File

@ -2493,8 +2493,15 @@ static bool uv_mouse_select_multi(bContext *C,
else if (selectmode == UV_SELECT_EDGE) {
is_selected = uvedit_edge_select_test(scene, hit.l, cd_loop_uv_offset);
}
else { /* Vertex or island. */
is_selected = uvedit_uv_select_test(scene, hit.l, cd_loop_uv_offset);
else {
/* Vertex or island. For island (if we were using #uv_find_nearest_face_multi_ex, see above),
* `hit.l` is NULL, use `hit.efa` instead. */
if (hit.l != NULL) {
is_selected = uvedit_uv_select_test(scene, hit.l, cd_loop_uv_offset);
}
else {
is_selected = uvedit_face_select_test(scene, hit.efa, cd_loop_uv_offset);
}
}
}