Commit: b03866288728823d74352ba2ba91ade8d08e1d2e
Author: Sibo Van Gool
Date: Mon Jan 16 11:06:01 2023 +1100
Branches: master
https://developer.blender.org/rBb03866288728823d74352ba2ba91ade8d08e1d2e
Fix T103559: Check for no-face object for particle baking
Meshes spawning particles from faces with with UV's/Vertex-colors but no
faces would crash de-referencing a NULL pointer.
Resolve by adding a check for this case and an assertion if CD_MFACE is
NULL when the mesh has polygons.
Ref D16947
===================================================================
M source/blender/draw/intern/draw_cache_impl_particles.c
===================================================================
diff --git a/source/blender/draw/intern/draw_cache_impl_particles.c
b/source/blender/draw/intern/draw_cache_impl_particles.c
index 5b45fa38704..cba06eec76c 100644
--- a/source/blender/draw/intern/draw_cache_impl_particles.c
+++ b/source/blender/draw/intern/draw_cache_impl_particles.c
@@ -311,6 +311,11 @@ static void particle_calculate_parent_uvs(ParticleSystem
*psys,
}
if (!ELEM(num, DMCACHE_NOTFOUND, DMCACHE_ISCHILD)) {
const MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->fdata,
CD_MFACE);
+ if (UNLIKELY(mfaces == NULL)) {
+ BLI_assert_msg(psmd->mesh_final->totpoly == 0,
+ "A mesh with polygons should always have a generated
'CD_MFACE' layer!");
+ return;
+ }
const MFace *mface = &mfaces[num];
for (int j = 0; j < num_uv_layers; j++) {
psys_interpolate_uvs(mtfaces[j] + num, mface->v4, particle->fuv,
r_uv[j]);
@@ -341,6 +346,11 @@ static void particle_calculate_parent_mcol(ParticleSystem
*psys,
}
if (!ELEM(num, DMCACHE_NOTFOUND, DMCACHE_ISCHILD)) {
const MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->fdata,
CD_MFACE);
+ if (UNLIKELY(mfaces == NULL)) {
+ BLI_assert_msg(psmd->mesh_final->totpoly == 0,
+ "A mesh with polygons should always have a generated
'CD_MFACE' layer!");
+ return;
+ }
const MFace *mface = &mfaces[num];
for (int j = 0; j < num_col_layers; j++) {
/* CustomDataLayer CD_MCOL has 4 structs per face. */
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs