Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-03-29 03:27:58 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-03-29 03:43:30 +0300
commit99d4321feff632c0824ee7448e2997e8da2849b4 (patch)
treefd3879d7a0d7578c933582cf63c3a50740ebc516 /source/blender/modifiers/intern/MOD_solidify.c
parent6d4d7c7ca3def7f74be9960a2ff59e3c2c817105 (diff)
Fix T63063: solidify modifier crash after recent changes.
It should not assume there to be an origindex layer. Checked other modifiers and they all seem to explicitly create it or verify if it's NULl.
Diffstat (limited to 'source/blender/modifiers/intern/MOD_solidify.c')
-rw-r--r--source/blender/modifiers/intern/MOD_solidify.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/source/blender/modifiers/intern/MOD_solidify.c b/source/blender/modifiers/intern/MOD_solidify.c
index d9b05b102a2..5f26afe6a3a 100644
--- a/source/blender/modifiers/intern/MOD_solidify.c
+++ b/source/blender/modifiers/intern/MOD_solidify.c
@@ -768,15 +768,17 @@ static Mesh *applyModifier(
/* add faces & edges */
origindex_edge = CustomData_get_layer(&result->edata, CD_ORIGINDEX);
- BLI_assert((numEdges == 0) || (origindex_edge != NULL));
+ orig_ed = (origindex_edge) ? &origindex_edge[(numEdges * stride) + newEdges] : NULL;
ed = &medge[(numEdges * stride) + newEdges]; /* start after copied edges */
- orig_ed = &origindex_edge[(numEdges * stride) + newEdges];
- for (i = 0; i < rimVerts; i++, ed++, orig_ed++) {
+ for (i = 0; i < rimVerts; i++, ed++) {
ed->v1 = new_vert_arr[i];
ed->v2 = (do_shell ? new_vert_arr[i] : i) + numVerts;
ed->flag |= ME_EDGEDRAW | ME_EDGERENDER;
- *orig_ed = ORIGINDEX_NONE;
+ if (orig_ed) {
+ *orig_ed = ORIGINDEX_NONE;
+ orig_ed++;
+ }
if (crease_rim) {
ed->crease = crease_rim;
@@ -848,8 +850,10 @@ static Mesh *applyModifier(
ml[j++].e = (numEdges * stride) + old_vert_arr[ed->v2] + newEdges;
}
- origindex_edge[ml[j - 3].e] = ORIGINDEX_NONE;
- origindex_edge[ml[j - 1].e] = ORIGINDEX_NONE;
+ if (origindex_edge) {
+ origindex_edge[ml[j - 3].e] = ORIGINDEX_NONE;
+ origindex_edge[ml[j - 1].e] = ORIGINDEX_NONE;
+ }
/* use the next material index if option enabled */
if (mat_ofs_rim) {