[Bf-blender-cvs] [c1d1c1d] master: Fix T48088: Reproducible crash: Edges + Array Mod + Hair Particles.
Bastien Montagne
noreply at git.blender.org
Fri Apr 8 16:34:40 CEST 2016
Commit: c1d1c1dc6b9b1e3d01ea9b8acacd235c1a357500
Author: Bastien Montagne
Date: Fri Apr 8 16:26:42 2016 +0200
Branches: master
https://developer.blender.org/rBc1d1c1dc6b9b1e3d01ea9b8acacd235c1a357500
Fix T48088: Reproducible crash: Edges + Array Mod + Hair Particles.
Code did not consider the possibility to have no face at all! :P
===================================================================
M source/blender/blenkernel/intern/particle.c
===================================================================
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index 0b88533..0987004 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -1422,7 +1422,6 @@ int psys_particle_dm_face_lookup(
{
MFace *mtessface_final;
OrigSpaceFace *osface_final;
- int totface_final;
int pindex_orig;
float uv[2], (*faceuv)[2];
@@ -1430,6 +1429,13 @@ int psys_particle_dm_face_lookup(
const int *index_mf_to_mpoly = NULL;
const int *index_mp_to_orig = NULL;
+ const int totface_final = dm_final->getNumTessFaces(dm_final);
+ const int totface_deformed = dm_deformed ? dm_deformed->getNumTessFaces(dm_deformed) : totface_final;
+
+ if (ELEM(0, totface_final, totface_deformed)) {
+ return DMCACHE_NOTFOUND;
+ }
+
index_mf_to_mpoly = dm_final->getTessFaceDataArray(dm_final, CD_ORIGINDEX);
index_mp_to_orig = dm_final->getPolyDataArray(dm_final, CD_ORIGINDEX);
BLI_assert(index_mf_to_mpoly);
@@ -1451,11 +1457,6 @@ int psys_particle_dm_face_lookup(
index_mf_to_mpoly_deformed = NULL;
- totface_final = dm_final->getNumTessFaces(dm_final);
- if (!totface_final) {
- return DMCACHE_NOTFOUND;
- }
-
mtessface_final = dm_final->getTessFaceArray(dm_final);
osface_final = dm_final->getTessFaceDataArray(dm_final, CD_ORIGSPACE);
More information about the Bf-blender-cvs
mailing list