From d890ad37a8268d31f3f79443b6c3b4a3c6a8b10e Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 6 Aug 2018 11:48:05 +0200 Subject: Fix horrible invalid mesh freeing in weightvg modifiers. Comes from rB7661f8a65b. Found while checking on T55818, but not solving that issue of course. --- source/blender/modifiers/intern/MOD_weightvgedit.c | 4 +++- source/blender/modifiers/intern/MOD_weightvgmix.c | 4 +++- source/blender/modifiers/intern/MOD_weightvgproximity.c | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) (limited to 'source/blender/modifiers') diff --git a/source/blender/modifiers/intern/MOD_weightvgedit.c b/source/blender/modifiers/intern/MOD_weightvgedit.c index a34ed1baaff..356edcd7bec 100644 --- a/source/blender/modifiers/intern/MOD_weightvgedit.c +++ b/source/blender/modifiers/intern/MOD_weightvgedit.c @@ -214,7 +214,9 @@ static Mesh *applyModifier( } /* Ultimate security check. */ if (!dvert) { - BKE_id_free(NULL, result); + if (result != mesh) { + BKE_id_free(NULL, result); + } return mesh; } diff --git a/source/blender/modifiers/intern/MOD_weightvgmix.c b/source/blender/modifiers/intern/MOD_weightvgmix.c index b6a7228b171..3c740530258 100644 --- a/source/blender/modifiers/intern/MOD_weightvgmix.c +++ b/source/blender/modifiers/intern/MOD_weightvgmix.c @@ -254,7 +254,9 @@ static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mes } /* Ultimate security check. */ if (!dvert) { - BKE_id_free(NULL, result); + if (result != mesh) { + BKE_id_free(NULL, result); + } return mesh; } diff --git a/source/blender/modifiers/intern/MOD_weightvgproximity.c b/source/blender/modifiers/intern/MOD_weightvgproximity.c index 05b1ec19253..c485aa132d7 100644 --- a/source/blender/modifiers/intern/MOD_weightvgproximity.c +++ b/source/blender/modifiers/intern/MOD_weightvgproximity.c @@ -433,7 +433,9 @@ static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mes } /* Ultimate security check. */ if (!dvert) { - BKE_id_free(NULL, result); + if (result != mesh) { + BKE_id_free(NULL, result); + } return mesh; } -- cgit v1.2.3