Prevent infinite loops through circular references of multiple intersections.

This commit is contained in:
Jürg Lehni 2015-09-21 09:43:19 -04:00
parent 40570b3e59
commit 19a17b2918

View file

@ -215,15 +215,21 @@ PathItem.inject(new function() {
// Link the new segment with the intersection on the other curve // Link the new segment with the intersection on the other curve
var inter = segment._intersection; var inter = segment._intersection;
if (inter) { if (inter) {
var other = inter._curve; var other = inter._intersection,
console.log('Link' next = loc._next;
+ ', seg: ' + segment._path._id + '.' + segment._index while (next && next !== other) {
+ ', other: ' + other._path._id); next = next._next;
// Create a chain of possible intersections linked through _next }
// First find the last intersection in the chain, then link it. if (!next) {
while (inter._next) console.log('Link'
inter = inter._next; + ', seg: ' + segment._path._id + '.' + segment._index
inter._next = loc._intersection; + ', other: ' + inter._curve._path._id);
// Create a chain of possible intersections linked through _next
// First find the last intersection in the chain, then link it.
while (inter._next)
inter = inter._next;
inter._next = loc._intersection;
}
} else { } else {
segment._intersection = loc._intersection; segment._intersection = loc._intersection;
} }