0027862: Exception in BRepOffsetAPI_MakePipeShell
authormsv <msv@opencascade.com>
Mon, 12 Sep 2016 07:21:53 +0000 (10:21 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 15 Sep 2016 09:04:32 +0000 (12:04 +0300)
Check if the shape is not null before querying its ShapeType.
Create test case for the bug.

Small correction of test case for issue CR27862

src/BRepFill/BRepFill_Sweep.cxx
tests/bugs/modalg_6/bug27862 [new file with mode: 0644]

index e9bf5b6..7037f12 100644 (file)
@@ -2606,11 +2606,12 @@ BRepFill_Sweep::BRepFill_Sweep(const Handle(BRepFill_SectionLaw)& Section,
     B.MakeCompound(Comp);
     for (isec=1; isec <=  NbLaw+1; isec++) 
       for (ipath=1, IPath=IFirst; ipath<=  NbPath+1; ipath++, IPath++) {
-      if (ipath <= NbPath) myUEdges->SetValue(isec, IPath, UEdge(isec, ipath));
-      if (isec <= NbLaw) myVEdges->SetValue(isec, IPath, VEdge(isec, ipath)); 
-      if ((ipath <= NbPath) && (isec <= NbLaw) && 
-         (myFaces->Value(isec, IPath).ShapeType() == TopAbs_FACE))
-       B.Add(Comp, myFaces->Value(isec, IPath));
+        if (ipath <= NbPath) myUEdges->SetValue(isec, IPath, UEdge(isec, ipath));
+        if (isec <= NbLaw) myVEdges->SetValue(isec, IPath, VEdge(isec, ipath)); 
+        if ((ipath <= NbPath) && (isec <= NbLaw) && 
+            !myFaces->Value(isec, IPath).IsNull() &&
+            myFaces->Value(isec, IPath).ShapeType() == TopAbs_FACE)
+          B.Add(Comp, myFaces->Value(isec, IPath));
     }
     BRepLib::EncodeRegularity(Comp, myTolAngular);
   }
diff --git a/tests/bugs/modalg_6/bug27862 b/tests/bugs/modalg_6/bug27862
new file mode 100644 (file)
index 0000000..43dd7bb
--- /dev/null
@@ -0,0 +1,11 @@
+puts "============"
+puts "OCC27862"
+puts "============"
+puts ""
+######################################################
+#  Exception in BRepOffsetAPI_MakePipeShell
+######################################################
+
+restore [locate_data_file bug27862.brep] a
+explode a
+pipe r a_1 a_2