From: ika Date: Fri, 23 Mar 2018 15:12:00 +0000 (+0300) Subject: 0029633: Data Exchange - access violation in StepVisual_PresentationStyleAssignment... X-Git-Tag: V7_3_0_beta~23 X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=commitdiff_plain;h=f0bef12142f84cc51c7d8ecc593dc25150d33a96 0029633: Data Exchange - access violation in StepVisual_PresentationStyleAssignment while translating STEP file Add several checks for null. --- diff --git a/src/STEPCAFControl/STEPCAFControl_Reader.cxx b/src/STEPCAFControl/STEPCAFControl_Reader.cxx index c282e26121..75fd04b0df 100644 --- a/src/STEPCAFControl/STEPCAFControl_Reader.cxx +++ b/src/STEPCAFControl/STEPCAFControl_Reader.cxx @@ -3415,7 +3415,7 @@ static void setDimObjectToXCAF(const Handle(Standard_Transient)& theEnt, aDimObj->SetClassOfTolerance(aHolle, aFV, aG); } - if (!aCRI.IsNull() && aCRI->ItemElement()->Length() > 0) + if (!aCRI.IsNull() && !aCRI->ItemElement().IsNull() && aCRI->ItemElement()->Length() > 0) { //get modifiers XCAFDimTolObjects_DimensionModifiersSequence aModifiers; diff --git a/src/StepVisual/StepVisual_PresentationStyleAssignment.cxx b/src/StepVisual/StepVisual_PresentationStyleAssignment.cxx index f846b5dadd..50a71fb7d7 100644 --- a/src/StepVisual/StepVisual_PresentationStyleAssignment.cxx +++ b/src/StepVisual/StepVisual_PresentationStyleAssignment.cxx @@ -45,5 +45,5 @@ StepVisual_PresentationStyleSelect StepVisual_PresentationStyleAssignment::Style Standard_Integer StepVisual_PresentationStyleAssignment::NbStyles () const { - return styles->Length(); + return (styles.IsNull()) ? 0 : styles->Length(); } diff --git a/src/StepVisual/StepVisual_SurfaceSideStyle.cxx b/src/StepVisual/StepVisual_SurfaceSideStyle.cxx index f6510a2ac9..a345ff7545 100644 --- a/src/StepVisual/StepVisual_SurfaceSideStyle.cxx +++ b/src/StepVisual/StepVisual_SurfaceSideStyle.cxx @@ -58,5 +58,5 @@ StepVisual_SurfaceStyleElementSelect StepVisual_SurfaceSideStyle::StylesValue(co Standard_Integer StepVisual_SurfaceSideStyle::NbStyles () const { - return styles->Length(); + return (styles.IsNull()) ? 0 : styles->Length(); } diff --git a/tests/gdt/export/C3 b/tests/gdt/export/C3 new file mode 100644 index 0000000000..52cd6bd9e8 --- /dev/null +++ b/tests/gdt/export/C3 @@ -0,0 +1,19 @@ +# !!!! This file is generated automatically, do not edit manually! See end script +set filename bug29633_nist_ctc_05_asme1_ap242-1.stp + +set ref_data { + + NbOfDimensions : 28 + NbOfDimensionalSize : 1 + NbOfDimensionalLocation: 5 + NbOfAngular : 0 + NbOfWithPath : 0 + NbOfCommonLabels : 2 + NbOfTolerances : 10 + NbOfGTWithModifiers : 0 + NbOfGTWithMaxTolerance : 0 + NbOfGTWithDatums : 8 + NbOfDatumFeature : 2 + NbOfAttachedDatum : 9 + NbOfDatumTarget : 0 +}