From: msv Date: Thu, 9 Feb 2017 12:44:06 +0000 (+0300) Subject: 0027894: Crash when calling ShapeUpgrade_UnifySameDomain X-Git-Tag: V7_2_0_beta~259 X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=d3dadd23926fdb077e6b948e1d4ca74ba94f6ce5;p=occt-copy.git 0027894: Crash when calling ShapeUpgrade_UnifySameDomain - Avoid getting pcurve of edge on not connected face. - Avoid building wire of empty set of edges. Small correction of test case for issue CR27894 --- diff --git a/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx b/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx index d28f0aaa8d..adb252ff42 100644 --- a/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx +++ b/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx @@ -1374,7 +1374,7 @@ void ShapeUpgrade_UnifySameDomain::IntUnifyFaces(const TopoDS_Shape& theInpShape if (IsSameDomain(aFace,anCheckedFace, myLinTol, myAngTol)) { // hotfix for 27271: prevent merging along periodic direction. - if (IsLikeSeam(edge, aFace, aBaseSurface)) + if (IsLikeSeam(edge, anCheckedFace, aBaseSurface)) continue; // replacing pcurves @@ -1574,6 +1574,8 @@ void ShapeUpgrade_UnifySameDomain::IntUnifyFaces(const TopoDS_Shape& theInpShape } sawo.Add(c2d->Value(f).XY(),c2d->Value(l).XY()); } + if (sawo.NbEdges() == 0) + continue; sawo.Perform(); // constructind one degenerative edge diff --git a/tests/bugs/heal/bug27894 b/tests/bugs/heal/bug27894 new file mode 100644 index 0000000000..a2064ba7b7 --- /dev/null +++ b/tests/bugs/heal/bug27894 @@ -0,0 +1,15 @@ +puts "============" +puts "OCC27894" +puts "============" +puts "" +############################### +## Crash when calling ShapeUpgrade_UnifySameDomain +############################### + +stepread [locate_data_file bug27894_usd_raises_Standard_NullObject.stp] a * +renamevar a_1 a +unifysamedom result a + +checknbshapes result -m UnifySameDomain -face 18 -edge 45 + +checkview -display result -2d -path ${imagedir}/${test_image}.png