From: oan Date: Mon, 4 Nov 2019 14:49:07 +0000 (+0300) Subject: 0031125: BRepMesh_IncrementalMesh crash in constructor for empty compound shape X-Git-Tag: V7_5_0_beta~355 X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=commitdiff_plain;h=7756fc599d9c2b760296eeb290ae71152b17a792 0031125: BRepMesh_IncrementalMesh crash in constructor for empty compound shape Added check for cases of empty shapes producing null models. NoError status is returned as far as empty compounds are generally coorect shapes. --- diff --git a/src/BRepMesh/BRepMesh_IncrementalMesh.cxx b/src/BRepMesh/BRepMesh_IncrementalMesh.cxx index 24d3fd3658..25627edc83 100644 --- a/src/BRepMesh/BRepMesh_IncrementalMesh.cxx +++ b/src/BRepMesh/BRepMesh_IncrementalMesh.cxx @@ -108,15 +108,18 @@ void BRepMesh_IncrementalMesh::Perform(const Handle(IMeshTools_Context)& theCont myStatus = IMeshData_NoError; const Handle(IMeshData_Model)& aModel = theContext->GetModel(); - for (Standard_Integer aFaceIt = 0; aFaceIt < aModel->FacesNb(); ++aFaceIt) + if (!aModel.IsNull()) { - const IMeshData::IFaceHandle& aDFace = aModel->GetFace(aFaceIt); - myStatus |= aDFace->GetStatusMask(); - - for (Standard_Integer aWireIt = 0; aWireIt < aDFace->WiresNb(); ++aWireIt) + for (Standard_Integer aFaceIt = 0; aFaceIt < aModel->FacesNb(); ++aFaceIt) { - const IMeshData::IWireHandle& aDWire = aDFace->GetWire(aWireIt); - myStatus |= aDWire->GetStatusMask(); + const IMeshData::IFaceHandle& aDFace = aModel->GetFace(aFaceIt); + myStatus |= aDFace->GetStatusMask(); + + for (Standard_Integer aWireIt = 0; aWireIt < aDFace->WiresNb(); ++aWireIt) + { + const IMeshData::IWireHandle& aDWire = aDFace->GetWire(aWireIt); + myStatus |= aDWire->GetStatusMask(); + } } } diff --git a/tests/bugs/mesh/bug31125 b/tests/bugs/mesh/bug31125 new file mode 100644 index 0000000000..cbef730b1e --- /dev/null +++ b/tests/bugs/mesh/bug31125 @@ -0,0 +1,7 @@ +puts "=======" +puts "0031125: BRepMesh_IncrementalMesh crash in constructor for empty compound shape" +puts "=======" +puts "" + +compound result +incmesh result 1