Fix (unreported) memory leak in Fluid modifier copying.

Also generally simplify/sanitize this copy code.
This commit is contained in:
Bastien Montagne 2017-06-19 12:21:14 +02:00
parent 72c9141a7a
commit e9aaf5ed21
2 changed files with 8 additions and 8 deletions

View File

@ -68,12 +68,13 @@ static void copyData(ModifierData *md, ModifierData *target)
FluidsimModifierData *fluidmd = (FluidsimModifierData *) md;
FluidsimModifierData *tfluidmd = (FluidsimModifierData *) target;
if (tfluidmd->fss)
MEM_freeN(tfluidmd->fss);
tfluidmd->fss = MEM_dupallocN(fluidmd->fss);
if (tfluidmd->fss && (tfluidmd->fss->meshVelocities != NULL)) {
tfluidmd->fss->meshVelocities = MEM_dupallocN(tfluidmd->fss->meshVelocities);
fluidsim_free(tfluidmd);
if (fluidmd->fss) {
tfluidmd->fss = MEM_dupallocN(fluidmd->fss);
if (tfluidmd->fss && (tfluidmd->fss->meshVelocities != NULL)) {
tfluidmd->fss->meshVelocities = MEM_dupallocN(tfluidmd->fss->meshVelocities);
}
}
}

View File

@ -150,9 +150,8 @@ void fluidsim_free(FluidsimModifierData *fluidmd)
if (fluidmd && fluidmd->fss) {
if (fluidmd->fss->meshVelocities) {
MEM_freeN(fluidmd->fss->meshVelocities);
fluidmd->fss->meshVelocities = NULL;
}
MEM_freeN(fluidmd->fss);
MEM_SAFE_FREE(fluidmd->fss);
}
return;