Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2019-03-20 16:56:20 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2019-03-20 16:57:31 +0300
commit08efcefb470577cafd2587c1b356b028365dd3f9 (patch)
tree34efcaaa0428c3de982a79a2c96c2fbe21e30c26 /source/blender/modifiers
parent1f97f6c531e5b47127d65d4e05d084bb01914426 (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')
-rw-r--r--source/blender/modifiers/intern/MOD_dynamicpaint.c11
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,
};