[Bf-blender-cvs] [db8aa7b8512] master: Depsgraph: Fix violation of evaluated domain

Sergey Sharybin noreply at git.blender.org
Fri May 24 11:00:15 CEST 2019


Commit: db8aa7b851207294ffc943dc201e4f2955ed01dd
Author: Sergey Sharybin
Date:   Fri May 24 10:48:19 2019 +0200
Branches: master
https://developer.blender.org/rBdb8aa7b851207294ffc943dc201e4f2955ed01dd

Depsgraph: Fix violation of evaluated domain

Evaluation must never go to original objects and query them:
this is a huge violation of the entire idea of separating
state across viewports and render engines.

Allowed this to only happen for active dependency graph, where
we at least know order of dependency graph update and user
input.

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

M	source/blender/blenkernel/intern/DerivedMesh.c

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

diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 959435ad486..6b03d03f882 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -2070,7 +2070,6 @@ static void object_get_datamask(const Depsgraph *depsgraph,
                                 bool *r_need_mapping)
 {
   ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph);
-  Object *actob = view_layer->basact ? DEG_get_original_object(view_layer->basact->object) : NULL;
 
   DEG_get_customdata_mask_for_object(depsgraph, ob, r_mask);
 
@@ -2078,6 +2077,13 @@ static void object_get_datamask(const Depsgraph *depsgraph,
     *r_need_mapping = false;
   }
 
+  /* Must never access original objects when dependency graph is not active: it might be already
+   * freed. */
+  if (DEG_is_active(depsgraph)) {
+    return;
+  }
+
+  Object *actob = view_layer->basact ? DEG_get_original_object(view_layer->basact->object) : NULL;
   if (DEG_get_original_object(ob) == actob) {
     bool editing = BKE_paint_select_face_test(actob);



More information about the Bf-blender-cvs mailing list