diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-09-19 10:38:36 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-09-23 17:02:22 +0300 |
commit | aabb8db753bab618a3ecc5685acd1486cc13bd56 (patch) | |
tree | 0e67c674f10b2b4610c4e294d3a3d0335cbd7d8c | |
parent | 139cab0937f3cf8de4e53a19626ff539ac369101 (diff) |
Fix leak in UI Panels
Switching screens quickly didn't free the panels activedata.
-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) { |