diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-09-19 10:38:36 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-09-19 10:49:04 +0300 |
commit | 631d08aaed39a52c1479cd014c9941824743b5c1 (patch) | |
tree | cc76dbd9abba42616a5c17e0c25c0eb2d8b82e6d /source/blender/blenkernel/intern/screen.c | |
parent | cbeab360f1a94f3e446d8a645e4002780ac6537a (diff) |
Fix leak in UI Panels
Switching screens quickly didn't free the panels activedata.
Diffstat (limited to 'source/blender/blenkernel/intern/screen.c')
-rw-r--r-- | source/blender/blenkernel/intern/screen.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c index 4125a35cb33..7401ef28f62 100644 --- a/source/blender/blenkernel/intern/screen.c +++ b/source/blender/blenkernel/intern/screen.c @@ -308,7 +308,16 @@ void BKE_area_region_free(SpaceType *st, ARegion *ar) ar->v2d.tab_offset = NULL; } - BLI_freelistN(&ar->panels); + if (!BLI_listbase_is_empty(&ar->panels)) { + Panel *pa, *pa_next; + for (pa = ar->panels.first; pa; pa = pa_next) { + pa_next = pa->next; + if (pa->activedata) { + MEM_freeN(pa->activedata); + } + MEM_freeN(pa); + } + } for (uilst = ar->ui_lists.first; uilst; uilst = uilst->next) { if (uilst->dyn_data) { |