[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31339] trunk/blender/source/blender/ makesrna/intern/rna_particle.c: Fix #23307: accessing FluidParticles. settings causes crash.

Brecht Van Lommel brecht at blender.org
Sun Aug 15 10:53:28 CEST 2010


Revision: 31339
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31339
Author:   blendix
Date:     2010-08-15 10:53:28 +0200 (Sun, 15 Aug 2010)

Log Message:
-----------
Fix #23307: accessing FluidParticles.settings causes crash.

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_particle.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_particle.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_particle.c	2010-08-14 23:33:22 UTC (rev 31338)
+++ trunk/blender/source/blender/makesrna/intern/rna_particle.c	2010-08-15 08:53:28 UTC (rev 31339)
@@ -239,12 +239,25 @@
 	particle_recalc(bmain, scene, ptr, PSYS_RECALC_CHILD);
 }
 
+static ParticleSystem *rna_particle_system_for_target(Object *ob, ParticleTarget *target)
+{
+	ParticleSystem *psys;
+	ParticleTarget *pt;
+
+	for(psys=ob->particlesystem.first; psys; psys=psys->next)
+		for(pt=psys->targets.first; pt; pt=pt->next)
+			if(pt == target)
+				return psys;
+	
+	return NULL;
+}
+
 static void rna_Particle_target_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
 {
 	if(ptr->type==&RNA_ParticleTarget) {
+		Object *ob = (Object*)ptr->id.data;
 		ParticleTarget *pt = (ParticleTarget*)ptr->data;
-		Object *ob = (Object*)ptr->id.data;
-		ParticleSystem *kpsys=NULL, *psys=psys_get_current(ob);
+		ParticleSystem *kpsys=NULL, *psys=rna_particle_system_for_target(ob, pt);
 
 		if(pt->ob==ob || pt->ob==NULL) {
 			kpsys = BLI_findlink(&ob->particlesystem, pt->psys-1);
@@ -277,7 +290,8 @@
 {
 	if(ptr->type==&RNA_ParticleTarget) {
 		Object *ob = (Object*)ptr->id.data;
-		ParticleSystem *psys = psys_get_current(ob);
+		ParticleTarget *pt = (ParticleTarget*)ptr->data;
+		ParticleSystem *psys = rna_particle_system_for_target(ob, pt);
 		
 		psys->recalc = PSYS_RECALC_REDO;
 
@@ -302,16 +316,15 @@
 }
 static PointerRNA rna_particle_settings_get(PointerRNA *ptr)
 {
-	Object *ob= (Object*)ptr->id.data;
-	ParticleSettings *part = psys_get_current(ob)->part;
+	ParticleSystem *psys= (ParticleSystem*)ptr->data;
+	ParticleSettings *part = psys->part;
 
 	return rna_pointer_inherit_refine(ptr, &RNA_ParticleSettings, part);
 }
 
 static void rna_particle_settings_set(PointerRNA *ptr, PointerRNA value)
 {
-	Object *ob= (Object*)ptr->id.data;
-	ParticleSystem *psys = psys_get_current(ob);
+	ParticleSystem *psys= (ParticleSystem*)ptr->data;
 
 	if(psys->part)
 		psys->part->id.us--;





More information about the Bf-blender-cvs mailing list