diff --git a/src/CDF/CDF_Application.cxx b/src/CDF/CDF_Application.cxx index 92321d05ee..8c9e47a881 100644 --- a/src/CDF/CDF_Application.cxx +++ b/src/CDF/CDF_Application.cxx @@ -481,7 +481,15 @@ Standard_Boolean CDF_Application::FindReaderFromFormat(const TCollection_Extende ResourceName+=".RetrievalPlugin"; if(UTL::Find(Resources(),ResourceName)) { - thePluginId=UTL::GUID(UTL::Value(Resources(),ResourceName)); + // Get GUID as a string. + TCollection_ExtendedString strPluginId = UTL::Value(Resources(),ResourceName); + + // If the GUID (as a string) contains blanks, remove them. + if (strPluginId.Search(' ') != -1) + strPluginId.RemoveAll(' '); + + // Convert to GUID. + thePluginId=UTL::GUID(strPluginId); return Standard_True; } return Standard_False; diff --git a/src/CDM/CDM_Document.cxx b/src/CDM/CDM_Document.cxx index 6c326d9976..70bfca2c38 100644 --- a/src/CDM/CDM_Document.cxx +++ b/src/CDM/CDM_Document.cxx @@ -1187,7 +1187,16 @@ void CDM_Document::LoadResources() theResourceName+="StoragePlugin"; TCollection_ExtendedString thePluginId; FIND(theDocumentResource,theResourceName,myStoragePluginWasFound,thePluginId); - if(myStoragePluginWasFound) myStoragePlugin=UTL::GUID(thePluginId); + if(myStoragePluginWasFound) + { + // Check whether the GUID (as a string) contains blanks before and after the string. + // If it is so, remove them. + if (thePluginId.Search(' ') != -1) + thePluginId.RemoveAll(' '); + + // Convert to GUID. + myStoragePlugin=UTL::GUID(thePluginId); + } myResourcesAreLoaded=Standard_True; // cout << "resource Loaded: " << "Format: " << theFormat << ", FileExtension:" << myFileExtension << ", DataType:" << myDataType << ", VersionDataType:" << myVersionDataType << ", Description:" << myDescription << ", Domain:" << myDomain << endl; diff --git a/src/StdResource/XCAF b/src/StdResource/XCAF index d868901e70..1a8e4c8fc2 100755 --- a/src/StdResource/XCAF +++ b/src/StdResource/XCAF @@ -23,8 +23,8 @@ BinXCAF.RetrievalPlugin: a78ff497-a779-11d5-aab4-0050044b1af1 ! XmlOcaf.Description: Xml Document Version 1.0 XmlOcaf.FileExtension: xml -XmlOcaf.StoragePlugin: 03a56820-8269-11d5-aab2-0050044b1af1 -XmlOcaf.RetrievalPlugin: 03a56822-8269-11d5-aab2-0050044b1af1 +XmlOcaf.StoragePlugin: 03a56820-8269-11d5-aab2-0050044b1af1 +XmlOcaf.RetrievalPlugin: 03a56822-8269-11d5-aab2-0050044b1af1 ! ! standard attributes ! diff --git a/tests/bugs/caf/bug24852 b/tests/bugs/caf/bug24852 new file mode 100755 index 0000000000..06b7fd864f --- /dev/null +++ b/tests/bugs/caf/bug24852 @@ -0,0 +1,18 @@ +puts "==========" +puts "OCC24852" +puts "==========" +puts "" +######################################################## +# Crash on storage of an Ocaf document in XML file format +######################################################## + +NewDocument D XmlOcaf + +set File ${imagedir}/bug24852_test.xml + +if { [catch {set res [SaveAs D ${File}]}] != 0 } { + puts "Error : Crash on storage of an Ocaf document in XML file format" +} else { + puts "OK : Storage of an Ocaf document in XML file format is good" + file delete ${File} +}