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:
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
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue