From e1e9b5e661b41e86030a50a32131e6e64ea73e86 Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Tue, 29 Sep 2020 17:19:57 -0500 Subject: Fix use after free deleting object with modifier panels visible It's necessary to check if the panels are active before accessing their data. Thanks to @ankitm for reporting this. --- source/blender/editors/interface/interface_panel.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'source/blender/editors/interface/interface_panel.c') diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c index a23929ad789..66b9ec8685c 100644 --- a/source/blender/editors/interface/interface_panel.c +++ b/source/blender/editors/interface/interface_panel.c @@ -524,9 +524,11 @@ void UI_panel_set_expand_from_list_data(const bContext *C, Panel *panel) static void region_panels_set_expansion_from_list_data(const bContext *C, ARegion *region) { LISTBASE_FOREACH (Panel *, panel, ®ion->panels) { - PanelType *panel_type = panel->type; - if (panel_type != NULL && panel->type->flag & PNL_INSTANCED) { - UI_panel_set_expand_from_list_data(C, panel); + if (panel->runtime_flag & PANEL_ACTIVE) { + PanelType *panel_type = panel->type; + if (panel_type != NULL && panel->type->flag & PNL_INSTANCED) { + UI_panel_set_expand_from_list_data(C, panel); + } } } } -- cgit v1.2.3