From ecdd1864d16206eb45a6c95d9fcc0808a2c0087e Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 18 Feb 2019 18:21:44 +0100 Subject: [PATCH] Fix (unreported) broken-by-design code in depsgraph's `deg_backup_object_runtime()` Committing this since it does fix broken logic (previously in that condition obdata would always be set to NULL, since `BKE_object_runtime_reset()` is called before). However, this has presumably been broken that way since 05/2018, so maybe that whole condition is not needed anymore? Or NULL pointer was working as well here? @sergey eyes are required here I guess ;) --- .../blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 7775a2b3cd2..ea48c7e1069 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 @@ -821,7 +821,9 @@ static void deg_backup_object_runtime( * Need to make sure we don't have data set to evaluated one before free * anything. */ if (mesh_eval != NULL && object->data == mesh_eval) { - object->data = object->runtime.mesh_orig; + /* XXX Is this still useful? code was broken for some times (always setting object->data to NULL), + * and did not seem to cause any issue? */ + object->data = object_runtime_backup->runtime.mesh_orig; } /* Make a backup of base flags. */ object_runtime_backup->base_flag = object->base_flag;