[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48837] trunk/blender/source/blender/ blenkernel/intern/particle.c: Fix #32058, Crash when using ParticleInstance with an hidden particle system.

Lukas Toenne lukas.toenne at googlemail.com
Wed Jul 11 18:08:05 CEST 2012


Revision: 48837
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48837
Author:   lukastoenne
Date:     2012-07-11 16:08:04 +0000 (Wed, 11 Jul 2012)
Log Message:
-----------
Fix #32058, Crash when using ParticleInstance with an hidden particle system.

The instance modifier needs to access the derived mesh data of the particle parent object to create stuff on the hairs, however the dm does not exist when the particle modifier is hidden. This is a general design problem: Objects accessing another object's derived mesh data is unsafe. For now it just checks valid dm pointer and uses identity transform if NULL.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/particle.c

Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c	2012-07-11 14:48:47 UTC (rev 48836)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c	2012-07-11 16:08:04 UTC (rev 48837)
@@ -3400,6 +3400,12 @@
 {
 	float vec[3];
 
+	/* can happen when called from a different object's modifier */
+	if (!dm) {
+		unit_m4(hairmat);
+		return;
+	}
+	
 	psys_face_mat(0, dm, pa, hairmat, 0);
 	psys_particle_on_dm(dm, from, pa->num, pa->num_dmcache, pa->fuv, pa->foffset, vec, 0, 0, 0, 0, 0);
 	copy_v3_v3(hairmat[3], vec);




More information about the Bf-blender-cvs mailing list