Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2015-09-19 10:38:36 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2015-09-23 17:02:22 +0300
commitaabb8db753bab618a3ecc5685acd1486cc13bd56 (patch)
tree0e67c674f10b2b4610c4e294d3a3d0335cbd7d8c
parent139cab0937f3cf8de4e53a19626ff539ac369101 (diff)
Fix leak in UI Panels
Switching screens quickly didn't free the panels activedata.
-rw-r--r--source/blender/blenkernel/intern/screen.c11
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) {