Fix T40115: Smoke simulator memory leak with high poly mesh emitter.

Own error, all kudos go to scorpion81 (Martin Felke) for the nvestigation & patch!
This commit is contained in:
Bastien Montagne 2014-05-12 21:30:27 +02:00
parent 1b1b71f697
commit 355709432e
Notes: blender-bot 2023-02-14 10:40:11 +01:00
Referenced by issue #40170, Cycles baking not working
Referenced by issue #40156, Cycles Baking and applyRotation issues
Referenced by issue #40115, Smoke simulator memory leak with high poly mesh emitter
1 changed files with 11 additions and 5 deletions

View File

@ -1552,8 +1552,7 @@ static void sample_derivedmesh(
static void emit_from_derivedmesh(Object *flow_ob, SmokeDomainSettings *sds, SmokeFlowSettings *sfs, EmissionMap *em, float dt)
{
if (!sfs->dm) return;
{
if (sfs->dm) {
DerivedMesh *dm;
int defgrp_index = sfs->vgroup_density - 1;
MDeformVert *dvert = NULL;
@ -1684,10 +1683,17 @@ static void emit_from_derivedmesh(Object *flow_ob, SmokeDomainSettings *sds, Smo
free_bvhtree_from_mesh(&treeData);
/* restore original mverts */
CustomData_set_layer(&dm->vertData, CD_MVERT, mvert_orig);
if (mvert)
MEM_freeN(mvert);
if (vert_vel) MEM_freeN(vert_vel);
if (mvert) {
MEM_freeN(mvert);
}
if (vert_vel) {
MEM_freeN(vert_vel);
}
if (dm) {
dm->needsFree = 1;
dm->release(dm);
}
}
}