diff options
-rw-r--r-- | source/blender/blenkernel/intern/smoke.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c index 74edd1902d8..55673a334b4 100644 --- a/source/blender/blenkernel/intern/smoke.c +++ b/source/blender/blenkernel/intern/smoke.c @@ -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); + } } } |