0029574: Protection of attributes retrieval against zero ID in Ocaf XML.

//Impacts attributes supporting user defined IDs.
This commit is contained in:
szy
2018-03-19 18:43:04 +03:00
committed by bugmaster
parent 9b74e2071c
commit cbc4faa980
11 changed files with 130 additions and 130 deletions

View File

@@ -96,6 +96,17 @@ Standard_Boolean XmlMDataStd_ByteArrayDriver::Paste(const XmlObjMgt_Persistent&
Handle(TDataStd_ByteArray) aByteArray = Handle(TDataStd_ByteArray)::DownCast(theTarget);
// attribute id
Standard_GUID aGUID;
XmlObjMgt_DOMString aGUIDStr = anElement.getAttribute(::AttributeIDString());
if (aGUIDStr.Type() == XmlObjMgt_DOMString::LDOM_NULL)
aGUID = TDataStd_ByteArray::GetID(); //default case
else
aGUID = Standard_GUID(Standard_CString(aGUIDStr.GetString())); // user defined case
aByteArray->SetID(aGUID);
Handle(TColStd_HArray1OfByte) hArr = new TColStd_HArray1OfByte(aFirstInd, aLastInd);
TColStd_Array1OfByte& arr = hArr->ChangeArray1();
@@ -109,8 +120,8 @@ Standard_Boolean XmlMDataStd_ByteArrayDriver::Paste(const XmlObjMgt_Persistent&
TCollection_ExtendedString("Cannot retrieve integer member"
" for ByteArray attribute as \"")
+ aValueStr + "\"";
myMessageDriver->Send (aMessageString, Message_Fail);
return Standard_False;
myMessageDriver->Send (aMessageString, Message_Warning);
aValue = 0;
}
arr.SetValue(i, (Standard_Byte) aValue);
}
@@ -138,16 +149,6 @@ Standard_Boolean XmlMDataStd_ByteArrayDriver::Paste(const XmlObjMgt_Persistent&
#endif
aByteArray->SetDelta(aDelta);
// attribute id
Standard_GUID aGUID;
XmlObjMgt_DOMString aGUIDStr = anElement.getAttribute(::AttributeIDString());
if (aGUIDStr.Type() == XmlObjMgt_DOMString::LDOM_NULL)
aGUID = TDataStd_ByteArray::GetID(); //default case
else
aGUID = Standard_GUID(Standard_CString(aGUIDStr.GetString())); // user defined case
aByteArray->SetID(aGUID);
return Standard_True;
}