Fix T77047: Dyntopo Sample detail size on hidden mesh causes crash
The `Toolbar` and `Sidebar` hide the corresponding panel `VIEW3D_PT_sculpt_dyntopo` by polling for context.sculpt_object and context.tool_settings.sculpt. In the Active Tool in the Properties Editor this poll does not return False though, thus the sample_detail_size is possible from there. Second security check (the operator poll `SCULPT_mode_poll`) checks the active object -- that is still valid even if hidden, so we are allowed to execute the operator. However the active object becomes NULL once the area is switched in `sample_detail()` -- see `CTX_wm_area_set`), leading to the crash. Dont think there is a quick and easy way to do this in the poll from the Properties Editor, so just check for a valid active abject in the operator and return OPERATOR_CANCELLED if we dont have it. Maniphest Tasks: T77047 Differential Revision: https://developer.blender.org/D7832
This commit is contained in:
parent
4b39de677d
commit
20658e6a29
Notes:
blender-bot
2023-02-14 08:29:54 +01:00
Referenced by issue #77348, Blender LTS: Maintenance Task 2.83 Referenced by issue #77047, Dyntopo Sample detail size on hidden mesh causes crash
|
@ -259,8 +259,11 @@ static int sample_detail(bContext *C, int mx, int my, int mode)
|
|||
ED_view3d_viewcontext_init(C, &vc, depsgraph);
|
||||
|
||||
Object *ob = vc.obact;
|
||||
SculptSession *ss = ob->sculpt;
|
||||
if (ob == NULL) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
SculptSession *ss = ob->sculpt;
|
||||
if (!ss->pbvh) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue