[Bf-blender-cvs] [a3070474e29] blender2.8: Clear the ParticleSettings pointer to prevent doubly-freeing it

Sybren A. Stüvel noreply at git.blender.org
Fri May 18 16:32:00 CEST 2018


Commit: a3070474e29d6e17e5055397741c70c4dc166ace
Author: Sybren A. Stüvel
Date:   Fri May 18 16:29:01 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBa3070474e29d6e17e5055397741c70c4dc166ace

Clear the ParticleSettings pointer to prevent doubly-freeing it

Not happy with the approach, as it adds to nested_id_hack_discard_pointers(),
but at least it fixes a crash.

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

M	source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc

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

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 40f9402abc8..c8b9702621e 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
@@ -135,6 +135,15 @@ void nested_id_hack_discard_pointers(ID *id_cow)
 		SPECIAL_CASE(ID_LT, Lattice, key)
 		SPECIAL_CASE(ID_ME, Mesh, key)
 
+		case ID_OB:
+		{
+			/* Clear the ParticleSettings pointer to prevent doubly-freeing it. */
+			Object *ob = (Object *)id_cow;
+			LISTBASE_FOREACH(ParticleSystem *, psys, &ob->particlesystem) {
+				psys->part = NULL;
+			}
+			break;
+		}
 #  undef SPECIAL_CASE
 
 		default:



More information about the Bf-blender-cvs mailing list