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:
authorAlexander Gavrilov <angavrilov@gmail.com>2018-12-03 20:48:36 +0300
committerAlexander Gavrilov <angavrilov@gmail.com>2018-12-03 20:48:47 +0300
commit9637a1785694eb83bdfe2b0fe6c55c962137881b (patch)
tree1f700ed65f28702bb47c85b98818cb35bd0321e4
parent4b8b3692188bcbc71d2af7eccd891d679cfeab83 (diff)
Depsgraph: immediately free object's derived caches in the COW step.
After update of the mesh some of that data is so broken that using it would crash. To reduce the risk of crashes in case of dependency cycles, clean it up immediately.
-rw-r--r--source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
index 21ca1636880..98e1bf49c5d 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
@@ -854,6 +854,9 @@ static void deg_restore_object_runtime(
* that datablock.
*/
object->data = mesh_orig;
+
+ /* After that, immediately free the invalidated caches. */
+ BKE_object_free_derived_caches(object);
}
else {
Mesh *mesh_eval = object->runtime.mesh_eval;