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:
@@ -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,
|
||||
};
|
||||
|
Reference in New Issue
Block a user