diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2016-09-15 12:50:56 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2016-09-15 12:50:56 +0300 |
commit | a8ed9144a38980cb4e9a28af70b3b3b34a48e92f (patch) | |
tree | e6c2fbb94599fbdd48b9ffb076fdfeee7e3c2882 /source/blender/blenkernel/intern/particle_system.c | |
parent | a2a5ae5b54713d59287aebf189428270feddbb23 (diff) |
Fix crash in some cases when deleting particle systems.
Those 'never null' ID pointers are really a PITA to handle... luckily we don't have much of those around!
Found by Sybren, thanks.
Should be backported to 2.78.
Diffstat (limited to 'source/blender/blenkernel/intern/particle_system.c')
-rw-r--r-- | source/blender/blenkernel/intern/particle_system.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index b4e951ce04a..efaf1f9df2b 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -4336,7 +4336,9 @@ void BKE_particlesystem_id_loop(ParticleSystem *psys, ParticleSystemIDFunc func, func(psys, (ID **)&pt->ob, userdata, IDWALK_NOP); } - if (psys->part->phystype == PART_PHYS_BOIDS) { + /* Even though psys->part should never be NULL, this can happen as an exception during deletion. + * See ID_REMAP_SKIP/FORCE/FLAG_NEVER_NULL_USAGE in BKE_library_remap. */ + if (psys->part && psys->part->phystype == PART_PHYS_BOIDS) { ParticleData *pa; int p; |