diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-03-20 16:56:20 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-03-20 16:57:31 +0300 |
commit | 08efcefb470577cafd2587c1b356b028365dd3f9 (patch) | |
tree | 34efcaaa0428c3de982a79a2c96c2fbe21e30c26 /source/blender/modifiers/intern/MOD_dynamicpaint.c | |
parent | 1f97f6c531e5b47127d65d4e05d084bb01914426 (diff) |
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.
Diffstat (limited to 'source/blender/modifiers/intern/MOD_dynamicpaint.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_dynamicpaint.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/modifiers/intern/MOD_dynamicpaint.c b/source/blender/modifiers/intern/MOD_dynamicpaint.c index c4b1ebbb841..5a881683e80 100644 --- a/source/blender/modifiers/intern/MOD_dynamicpaint.c +++ b/source/blender/modifiers/intern/MOD_dynamicpaint.c @@ -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, }; |