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
path: root/source
diff options
context:
space:
mode:
authorBen Batt <benbatt@gmail.com>2006-08-13 19:23:57 +0400
committerBen Batt <benbatt@gmail.com>2006-08-13 19:23:57 +0400
commit404ccd1a07a5b2d5f649f3403ced9cc37f4556b8 (patch)
tree19aa798d8fa2a27e45a53e6ba4b6d8f80900b292 /source
parent879fa3cb4e04dfab6cee96effa7931bf18e3b6ce (diff)
Patch #4751 - Array modifier merge segfault fix.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/modifier.c7
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