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:
authorJulian Eisel <eiseljulian@gmail.com>2017-11-19 15:16:14 +0300
committerJulian Eisel <eiseljulian@gmail.com>2017-11-19 15:16:14 +0300
commit7f96323cd001bc7555d0f145027e3bbbbc1462b8 (patch)
tree842a4ac4095be5c22bd0a505612c731351839a29 /source/blender/blenkernel/intern/subsurf_ccg.c
parent4de142e0b7ba014a3e1e41672600aa38465f2454 (diff)
parent3133d2d58c391544a48342860120336e2a0f944e (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender/blenkernel/intern/subsurf_ccg.c')
-rw-r--r--source/blender/blenkernel/intern/subsurf_ccg.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index d461e03fcda..2f9a7090caf 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -3777,10 +3777,12 @@ static void ccgDM_release(DerivedMesh *dm)
if (ccgdm->gridOffset) MEM_freeN(ccgdm->gridOffset);
if (ccgdm->gridFlagMats) MEM_freeN(ccgdm->gridFlagMats);
if (ccgdm->gridHidden) {
- int i, numGrids = dm->getNumGrids(dm);
- for (i = 0; i < numGrids; i++) {
- if (ccgdm->gridHidden[i])
+ /* Using dm->getNumGrids(dm) accesses freed memory */
+ uint numGrids = ccgdm->numGrid;
+ for (uint i = 0; i < numGrids; i++) {
+ if (ccgdm->gridHidden[i]) {
MEM_freeN(ccgdm->gridHidden[i]);
+ }
}
MEM_freeN(ccgdm->gridHidden);
}
@@ -4084,6 +4086,7 @@ static void ccgdm_create_grids(DerivedMesh *dm)
ccgdm->gridFaces = gridFaces;
ccgdm->gridOffset = gridOffset;
ccgdm->gridFlagMats = gridFlagMats;
+ ccgdm->numGrid = numGrids;
}
static CCGElem **ccgDM_getGridData(DerivedMesh *dm)