Fix T61759: Dynamic paint smudge crash

The issue was caused by mesh needed for dynamic paint brush being
stored in the modifier. That make it to be freed and set to NULL
when running copy-on-write.

Solved by moving the mesh to be stored in modifier's runtime data.
This commit is contained in:
2019-03-20 14:56:20 +01:00
parent 1f97f6c531
commit 08efcefb47
5 changed files with 96 additions and 43 deletions

View File

@@ -58,6 +58,15 @@ static void copyData(const ModifierData *md, ModifierData *target, const int fla
dynamicPaint_Modifier_copy(pmd, tpmd, flag);
}
static void freeRuntimeData(void *runtime_data_v)
{
if (runtime_data_v == NULL) {
return;
}
DynamicPaintRuntime *runtime_data = (DynamicPaintRuntime *)runtime_data_v;
dynamicPaint_Modifier_free_runtime(runtime_data);
}
static void freeData(ModifierData *md)
{
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
@@ -192,5 +201,5 @@ ModifierTypeInfo modifierType_DynamicPaint = {
/* foreachObjectLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ foreachTexLink,
/* freeRuntimeData */ NULL,
/* freeRuntimeData */ freeRuntimeData,
};