0032949: Modeling Algorithms - Infinite loop in ShapeUpgrade_UnifySameDomain #12
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR addresses 0032949: Infinite loop in ShapeUpgrade_UnifySameDomain.
As per the tracker, this occurs because the contour pcurve iteration in
RelocatePCurvesToNewUorigin
assumes that after the termination of the inner loop,theVEmap
will be decremented and eventually empty entirely, however it is possible to provide a shape for which this is not the case.This change updates
RemoveEdgeFromMap()
andRelocatePCurvesToNewUorigin()
to detect if this happens and terminate.Test Case
The issue can be reproduced by running UnifySameDomain on a problematic shape. E.g. I just add this snippet to the start of one of the examples,
There is a file (BuildingPart.bbrep) in the issue tracker to demonstrate it, but I have not been able to read it (BinTools doesn't seem to be aware of the format, even though the shape was only posted this year).
I also have a shape, but it is from a customer model so cannot be shared.
If its not possible to reproduce with the shape from the issue tracker I can look again at getting permission, but its unlikely.