diff options
author | Pablo Dobarro <pablodp606> | 2021-02-03 22:54:30 +0300 |
---|---|---|
committer | Pablo Dobarro <pablodp606@gmail.com> | 2021-02-03 22:55:17 +0300 |
commit | 7bde2844ae8fcf5547edc495a0518cfdad49ffff (patch) | |
tree | 8e037ad5e528b4002e1e57fcf98d5e8196579860 | |
parent | 5eb5a7f4b7d7c5228ec9596b35e7f2e317aad97d (diff) |
Fix memory leak in boundary brush preview data
The edge preview data of the boundary needs to be freed with the
boundary data created for the brush. Also, all data for the
ScultpSession preview that is used to render the cursor needs to be
freed with the ##SculptSession##.
Found by Jacques Lucke
Reviewed By: JacquesLucke
Differential Revision: https://developer.blender.org/D10173
-rw-r--r-- | source/blender/blenkernel/intern/paint.c | 8 | ||||
-rw-r--r-- | source/blender/editors/sculpt_paint/sculpt_boundary.c | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index 4eecf3a3a87..7c65f118cf4 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -1487,6 +1487,14 @@ void BKE_sculptsession_free(Object *ob) MEM_SAFE_FREE(ss->pose_ik_chain_preview); } + if (ss->boundary_preview) { + MEM_SAFE_FREE(ss->boundary_preview->vertices); + MEM_SAFE_FREE(ss->boundary_preview->edges); + MEM_SAFE_FREE(ss->boundary_preview->distance); + MEM_SAFE_FREE(ss->boundary_preview->edit_info); + MEM_SAFE_FREE(ss->boundary_preview); + } + BKE_sculptsession_free_vwpaint_data(ob->sculpt); MEM_freeN(ss); diff --git a/source/blender/editors/sculpt_paint/sculpt_boundary.c b/source/blender/editors/sculpt_paint/sculpt_boundary.c index 64f2542dcbe..0cfb6f17adb 100644 --- a/source/blender/editors/sculpt_paint/sculpt_boundary.c +++ b/source/blender/editors/sculpt_paint/sculpt_boundary.c @@ -530,6 +530,7 @@ SculptBoundary *SCULPT_boundary_data_init(Object *object, void SCULPT_boundary_data_free(SculptBoundary *boundary) { MEM_SAFE_FREE(boundary->vertices); + MEM_SAFE_FREE(boundary->edges); MEM_SAFE_FREE(boundary->distance); MEM_SAFE_FREE(boundary->edit_info); MEM_SAFE_FREE(boundary->bend.pivot_positions); |