[Bf-blender-cvs] [7969b23] master: Fix T39775: Skin modifier crash
Campbell Barton
noreply at git.blender.org
Wed May 13 08:08:51 CEST 2015
Commit: 7969b238dbfd697a2590d654090080c862346d76
Author: Campbell Barton
Date: Wed May 13 16:01:43 2015 +1000
Branches: master
https://developer.blender.org/rB7969b238dbfd697a2590d654090080c862346d76
Fix T39775: Skin modifier crash
===================================================================
M source/blender/modifiers/intern/MOD_skin.c
===================================================================
diff --git a/source/blender/modifiers/intern/MOD_skin.c b/source/blender/modifiers/intern/MOD_skin.c
index 6c09622..1b8b296 100644
--- a/source/blender/modifiers/intern/MOD_skin.c
+++ b/source/blender/modifiers/intern/MOD_skin.c
@@ -104,6 +104,9 @@ typedef struct Frame {
/* Merge to target frame/corner (no merge if frame is null) */
struct Frame *frame;
int corner;
+ /* checked to avoid chaining.
+ * (merging when we're already been referenced), see T39775 */
+ unsigned int is_target : 1;
} merge[4];
/* For hull frames, whether each vertex is detached or not */
@@ -363,7 +366,7 @@ static void merge_frame_corners(Frame **frames, int totframe)
/* Compare with each corner of all other frames... */
for (l = 0; l < 4; l++) {
- if (frames[k]->merge[l].frame)
+ if (frames[k]->merge[l].frame || frames[k]->merge[l].is_target)
continue;
/* Some additional concerns that could be checked
@@ -393,6 +396,7 @@ static void merge_frame_corners(Frame **frames, int totframe)
frames[k]->merge[l].frame = frames[i];
frames[k]->merge[l].corner = j;
+ frames[i]->merge[j].is_target = true;
/* Can't merge another corner into the same
* frame corner, so move on to frame k+1 */
More information about the Bf-blender-cvs
mailing list