Fix T95212: Mirror modifier normals crash

The vertex and face normals from the input mesh
were used to calculate the normals on the result,
which could cause a crash because the result should
be about twice as large.

Also remove an unnecessary dirty tag, since it is handled
automatically when creating a new mesh or in the case
of the mirror modifier, when calculating the new custom
face corner normals.
This commit is contained in:
Hans Goudey 2022-01-27 11:02:10 -06:00
parent d7ac659e02
commit 834b966b41
Notes: blender-bot 2023-02-14 10:32:59 +01:00
Referenced by issue #95212, The mirror modifier crashes Blender
2 changed files with 2 additions and 5 deletions

View File

@ -420,7 +420,7 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(MirrorModifierData *mmd,
/* calculate custom normals into loop_normals, then mirror first half into second half */
BKE_mesh_normals_loop_split(result->mvert,
BKE_mesh_vertex_normals_ensure(mesh),
BKE_mesh_vertex_normals_ensure(result),
result->totvert,
result->medge,
result->totedge,
@ -428,7 +428,7 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(MirrorModifierData *mmd,
loop_normals,
totloop,
result->mpoly,
BKE_mesh_poly_normals_ensure(mesh),
BKE_mesh_poly_normals_ensure(result),
totpoly,
true,
mesh->smoothresh,

View File

@ -120,9 +120,6 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *
result = mirrorModifier__doMirror(mmd, ctx->object, mesh);
if (result != mesh) {
BKE_mesh_normals_tag_dirty(result);
}
return result;
}