Fix T57907: Crash with hair when switching between object and edit mode
Was only visible after going in and out (with some strokes inbetween) hair edit mode. The edit structure was never freed during Blender session for some reason. Now we free those when leaving particle edit mode.
This commit is contained in:
parent
494d13115c
commit
82c3fdd559
Notes:
blender-bot
2023-02-14 08:07:50 +01:00
Referenced by issue #59742, Hair instability with collision Referenced by issue #57907, Consistent crashing with hair when switching between object mode and edit mode.
|
@ -4810,6 +4810,21 @@ static bool particle_edit_toggle_poll(bContext *C)
|
|||
modifiers_findByType(ob, eModifierType_Softbody));
|
||||
}
|
||||
|
||||
static void free_all_psys_edit(Object *object)
|
||||
{
|
||||
for (ParticleSystem *psys = object->particlesystem.first;
|
||||
psys != NULL;
|
||||
psys = psys->next)
|
||||
{
|
||||
if (psys->edit != NULL) {
|
||||
BLI_assert(psys->free_edit != NULL);
|
||||
psys->free_edit(psys->edit);
|
||||
psys->free_edit = NULL;
|
||||
psys->edit = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int particle_edit_toggle_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
struct wmMsgBus *mbus = CTX_wm_message_bus(C);
|
||||
|
@ -4851,6 +4866,7 @@ static int particle_edit_toggle_exec(bContext *C, wmOperator *op)
|
|||
else {
|
||||
ob->mode &= ~mode_flag;
|
||||
toggle_particle_cursor(C, 0);
|
||||
free_all_psys_edit(ob);
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_OBJECT, NULL);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue