diff --git a/src/IntTools/IntTools_SurfaceRangeLocalizeData.cxx b/src/IntTools/IntTools_SurfaceRangeLocalizeData.cxx index 4e13d4ad4c..23c0a05e4a 100644 --- a/src/IntTools/IntTools_SurfaceRangeLocalizeData.cxx +++ b/src/IntTools/IntTools_SurfaceRangeLocalizeData.cxx @@ -224,7 +224,7 @@ const gp_Pnt &IntTools_SurfaceRangeLocalizeData::GetPointInFrame Standard_Integer aFrmUInd = theUIndex + myUIndMin - 1; Standard_Integer aFrmVInd = theVIndex + myVIndMin - 1; - if (aFrmUInd > myUIndMax || aFrmVInd > myVIndMax) + if (myGridPoints.IsNull() || aFrmUInd > myUIndMax || aFrmVInd > myVIndMax) return gp::Origin(); return myGridPoints->Value(aFrmUInd, aFrmVInd); @@ -235,7 +235,7 @@ Standard_Real IntTools_SurfaceRangeLocalizeData::GetUParamInFrame { Standard_Integer aFrmInd = theIndex + myUIndMin - 1; - if (aFrmInd > myUIndMax) + if (myUParams.IsNull() || aFrmInd > myUIndMax) return Precision::Infinite(); return myUParams->Value(aFrmInd); @@ -246,7 +246,7 @@ Standard_Real IntTools_SurfaceRangeLocalizeData::GetVParamInFrame { Standard_Integer aFrmInd = theIndex + myVIndMin - 1; - if (aFrmInd > myVIndMax) + if (myVParams.IsNull() || aFrmInd > myVIndMax) return Precision::Infinite(); return myVParams->Value(aFrmInd); diff --git a/tests/bugs/modalg_8/bug33414 b/tests/bugs/modalg_8/bug33414 new file mode 100644 index 0000000000..89db2191fd --- /dev/null +++ b/tests/bugs/modalg_8/bug33414 @@ -0,0 +1,10 @@ +puts "========================" +puts "0033414: Modeling Algorithms - Access violation during executing BRepAlgoAPI_Section::Build()" +puts "========================" + +set filepath1 [locate_data_file "CR33414_1.brep"] +set filepath2 [locate_data_file "CR33414_2.brep"] +restore ${filepath1} shape1 +restore ${filepath2} shape2 +bsection res shape1 shape2 +# If bsection didn't cause a crash - everything is OK. \ No newline at end of file