diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2018-12-03 20:48:36 +0300 |
---|---|---|
committer | Alexander Gavrilov <angavrilov@gmail.com> | 2018-12-03 20:48:47 +0300 |
commit | 9637a1785694eb83bdfe2b0fe6c55c962137881b (patch) | |
tree | 1f700ed65f28702bb47c85b98818cb35bd0321e4 /source/blender | |
parent | 4b8b3692188bcbc71d2af7eccd891d679cfeab83 (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.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc | 3 |
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; |