diff options
author | Ben Batt <benbatt@gmail.com> | 2006-08-13 19:23:57 +0400 |
---|---|---|
committer | Ben Batt <benbatt@gmail.com> | 2006-08-13 19:23:57 +0400 |
commit | 404ccd1a07a5b2d5f649f3403ced9cc37f4556b8 (patch) | |
tree | 19aa798d8fa2a27e45a53e6ba4b6d8f80900b292 /source | |
parent | 879fa3cb4e04dfab6cee96effa7931bf18e3b6ce (diff) |
Patch #4751 - Array modifier merge segfault fix.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/modifier.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index b796d8f0216..c565cfa5979 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -649,7 +649,12 @@ static int calc_mapping(IndexMapEntry *indexMap, int oldVert, int copy) /* vert was merged with another vert */ int mergeVert = indexMap[oldVert].merge; - if (mergeVert == indexMap[mergeVert].merge) + /* follow the chain of merges to the end */ + while(indexMap[mergeVert].merge >= 0 + && indexMap[mergeVert].merge != mergeVert) + mergeVert = indexMap[mergeVert].merge; + + if(indexMap[mergeVert].merge == mergeVert) /* vert merged with vert that was merged with itself */ newVert = indexMap[mergeVert].new; else |