[Bf-blender-cvs] [3b38fd6] master: Fix T46720: Crash applying subsurf modifier

Campbell Barton noreply at git.blender.org
Tue Nov 10 16:12:42 CET 2015


Commit: 3b38fd6bf92cd9abc502346198e54191a247e860
Author: Campbell Barton
Date:   Wed Nov 11 01:56:39 2015 +1100
Branches: master
https://developer.blender.org/rB3b38fd6bf92cd9abc502346198e54191a247e860

Fix T46720: Crash applying subsurf modifier

Freeing a modifier that had data in the derived mesh could crash
(applying or removing).

===================================================================

M	source/blender/blenkernel/intern/object.c
M	source/blender/editors/object/object_modifier.c

===================================================================

diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 1e34560..5d5bfd9 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -211,6 +211,9 @@ void BKE_object_free_modifiers(Object *ob)
 
 	/* same for softbody */
 	BKE_object_free_softbody(ob);
+
+	/* modifiers may have stored data in the DM cache */
+	BKE_object_free_derived_caches(ob);
 }
 
 void BKE_object_modifier_hook_reset(Object *ob, HookModifierData *hmd)
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 8ef2bd1..b7d1d6b 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -324,6 +324,7 @@ static bool object_modifier_remove(Main *bmain, Object *ob, ModifierData *md,
 
 	BLI_remlink(&ob->modifiers, md);
 	modifier_free(md);
+	BKE_object_free_derived_caches(ob);
 
 	return 1;
 }
@@ -709,6 +710,8 @@ int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, Modi
 	BLI_remlink(&ob->modifiers, md);
 	modifier_free(md);
 
+	BKE_object_free_derived_caches(ob);
+
 	return 1;
 }




More information about the Bf-blender-cvs mailing list