[Bf-blender-cvs] [99d4321feff] master: Fix T63063: solidify modifier crash after recent changes.

Brecht Van Lommel noreply at git.blender.org
Fri Mar 29 01:43:44 CET 2019


Commit: 99d4321feff632c0824ee7448e2997e8da2849b4
Author: Brecht Van Lommel
Date:   Fri Mar 29 01:27:58 2019 +0100
Branches: master
https://developer.blender.org/rB99d4321feff632c0824ee7448e2997e8da2849b4

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.

===================================================================

M	source/blender/modifiers/intern/MOD_solidify.c

===================================================================

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) {



More information about the Bf-blender-cvs mailing list