Fix (unreported) memory leak in Fluid modifier copying.
Also generally simplify/sanitize this copy code.
This commit is contained in:
parent
72c9141a7a
commit
e9aaf5ed21
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue