From e3b49bb850018ae73088b8d4e7c195206f8b2f31 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Thu, 1 Oct 2020 18:11:51 +0200 Subject: Fix T81200: Crash on certain armature select operators when OpenGL Depth Picking is disabled Affected were (at least) - Select Linked pick - Select Shortest Path Was originally caused by rB8b347fc2cdc6 [which got improved in rBfc8a7a44b200 - but only partially]. After removal of BONESEL_NOSEL we have to filter out -1 from the hits for any bone picking it seems (since armature drawing uses this). In rBfc8a7a44b200, this was done for 'ED_armature_edit_select_pick' (or 'get_nearest_editbonepoint' precisely), now do this for 'ed_armature_pick_bone_impl' as well. Reviewers: campbellbarton Maniphest Tasks: T81200 Differential Revision: https://developer.blender.org/D9080 --- source/blender/editors/armature/armature_select.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'source') diff --git a/source/blender/editors/armature/armature_select.c b/source/blender/editors/armature/armature_select.c index 4c5efb304c9..09d54410e55 100644 --- a/source/blender/editors/armature/armature_select.c +++ b/source/blender/editors/armature/armature_select.c @@ -335,8 +335,16 @@ static void *ed_armature_pick_bone_impl( BLI_rcti_init_pt_radius(&rect, xy, 0); - hits = view3d_opengl_select( - &vc, buffer, MAXPICKBUF, &rect, VIEW3D_SELECT_PICK_NEAREST, VIEW3D_SELECT_FILTER_NOP); + /* Don't use hits with this ID, (armature drawing uses this). */ + const int select_id_ignore = -1; + + hits = view3d_opengl_select_with_id_filter(&vc, + buffer, + MAXPICKBUF, + &rect, + VIEW3D_SELECT_PICK_NEAREST, + VIEW3D_SELECT_FILTER_NOP, + select_id_ignore); *r_base = NULL; -- cgit v1.2.3