1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0031825: Data Exchange, STEP - NULL dereference while re-exporting model with empty Datum description

Fix adding name and description of the datum
This commit is contained in:
dpasukhi
2020-10-17 16:21:51 +03:00
committed by bugmaster
parent 1b9cb073b9
commit 692decba26
3 changed files with 47 additions and 3 deletions

View File

@@ -2527,7 +2527,7 @@ Standard_Boolean STEPCAFControl_Reader::setDatumToXCAF(const Handle(StepDimTol_D
// Create datum target object
if (isValidDT) {
TDF_Label aDatL = aDGTTool->AddDatum();
TDF_Label aDatL = aDGTTool->AddDatum(theDat->Name(), theDat->Description(), theDat->Identification());
myGDTMap.Bind(aDT, aDatL);
aDGTTool->Lock(aDatL);
aDat = XCAFDoc_Datum::Set(aDatL);
@@ -2549,7 +2549,7 @@ Standard_Boolean STEPCAFControl_Reader::setDatumToXCAF(const Handle(StepDimTol_D
if (aShapeLabels.Length() > 0 || !isExistDatumTarget) {
// Create object for datum
TDF_Label aDatL = aDGTTool->AddDatum();
TDF_Label aDatL = aDGTTool->AddDatum(theDat->Name(), theDat->Description(), theDat->Identification());
myGDTMap.Bind(theDat, aDatL);
// bind datum label with all reference datum_feature entities
for (Standard_Integer i = 1; i <= aSAs.Length(); i++) {

View File

@@ -3466,8 +3466,12 @@ Standard_Boolean STEPCAFControl_Writer::WriteDGTs (const Handle(XSControl_WorkSe
Handle(XCAFDoc_Datum) DatumAttr;
if(!DatumL.FindAttribute(XCAFDoc_Datum::GetID(),DatumAttr)) continue;
Handle(TCollection_HAsciiString) aName = DatumAttr->GetName();
Handle(TCollection_HAsciiString) aDescription = DatumAttr->GetDescription();
Handle(TCollection_HAsciiString) anIdentification = DatumAttr->GetIdentification();
Handle(TCollection_HAsciiString) aDescription = DatumAttr->GetDescription();
if (aDescription.IsNull())
{
aDescription = new TCollection_HAsciiString();
}
Handle(StepDimTol_DatumFeature) DF = new StepDimTol_DatumFeature;
Handle(StepDimTol_Datum) aDatum = new StepDimTol_Datum;
DF->Init(aName, new TCollection_HAsciiString, PDS, StepData_LTrue);