From 955c3591908101e2727a1a1a439fde796969b81f Mon Sep 17 00:00:00 2001 From: akaftasev Date: Mon, 18 Sep 2023 16:49:06 +0100 Subject: [PATCH] 0032949: Modeling Algorithms - Infinite loop in ShapeUpgrade_UnifySameDomain Problem occurs when InternalEdges is empty but the vertices from VV is not same. Added condition to stop the loop when InternalEdges is empty. --- src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx b/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx index e17fefa111..d02ef64824 100644 --- a/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx +++ b/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx @@ -3708,8 +3708,11 @@ void ShapeUpgrade_UnifySameDomain::IntUnifyFaces(const TopoDS_Shape& theInpShape TopoDS_Edge anEdge = TopoDS::Edge(itl.Value()); if (anEdge.IsSame(EndEdges[ii])) continue; - found = Standard_True; - InternalEdges.RemoveKey(anEdge); + found = InternalEdges.RemoveKey(anEdge); + if (!found) + { + break; + } BB.Add(anInternalWire, anEdge); TopoDS_Vertex V1, V2; TopExp::Vertices(anEdge, V1, V2); -- 2.39.5