From: vsr Date: Thu, 6 Nov 2014 09:24:21 +0000 (+0300) Subject: Fix problem with saving/loading data of modules with incorrectly implemented persiste... X-Git-Tag: V7_5_0rc1~2 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=5356ea6e281479dcc84d12b7665fb9863e8aeb08;p=modules%2Fkernel.git Fix problem with saving/loading data of modules with incorrectly implemented persistence mechanism --- diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_StudyBuilder.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_StudyBuilder.cxx index 69e7cc755..7640234c2 100644 --- a/src/SALOMEDSImpl/SALOMEDSImpl_StudyBuilder.cxx +++ b/src/SALOMEDSImpl/SALOMEDSImpl_StudyBuilder.cxx @@ -323,8 +323,8 @@ bool SALOMEDSImpl_StudyBuilder::LoadWith(const SALOMEDSImpl_SComponent& anSCO, //Open the Study HDF file HDFfile *hdf_file = new HDFfile((char*)aHDFUrl.c_str()); - char aMultifileState[2]; - char ASCIIfileState[2]; + char aMultifileState[2] = { '0','0' }; + char ASCIIfileState[2] = { '0','0' }; bool hasModuleData = false; try { std::string scoid = anSCO.GetID(); @@ -350,13 +350,21 @@ bool SALOMEDSImpl_StudyBuilder::LoadWith(const SALOMEDSImpl_SComponent& anSCO, } else aStreamFile = NULL; - HDFdataset *multifile_hdf_dataset = new HDFdataset("MULTIFILE_STATE", hdf_sco_group); - multifile_hdf_dataset->OpenOnDisk(); - multifile_hdf_dataset->ReadFromDisk(aMultifileState); + if (hdf_sco_group->ExistInternalObject("MULTIFILE_STATE")) { + HDFdataset *multifile_hdf_dataset = new HDFdataset("MULTIFILE_STATE", hdf_sco_group); + multifile_hdf_dataset->OpenOnDisk(); + multifile_hdf_dataset->ReadFromDisk(aMultifileState); + multifile_hdf_dataset->CloseOnDisk(); + multifile_hdf_dataset = 0; + } - HDFdataset *ascii_hdf_dataset = new HDFdataset("ASCII_STATE", hdf_sco_group); - ascii_hdf_dataset->OpenOnDisk(); - ascii_hdf_dataset->ReadFromDisk(ASCIIfileState); + if (hdf_sco_group->ExistInternalObject("ASCII_STATE")) { + HDFdataset *ascii_hdf_dataset = new HDFdataset("ASCII_STATE", hdf_sco_group); + ascii_hdf_dataset->OpenOnDisk(); + ascii_hdf_dataset->ReadFromDisk(ASCIIfileState); + ascii_hdf_dataset->CloseOnDisk(); + ascii_hdf_dataset = 0; + } std::string aDir = SALOMEDSImpl_Tool::GetDirFromPath(Res); @@ -378,11 +386,6 @@ bool SALOMEDSImpl_StudyBuilder::LoadWith(const SALOMEDSImpl_SComponent& anSCO, //if(aDir != NULL) delete []aDir; - multifile_hdf_dataset->CloseOnDisk(); - multifile_hdf_dataset = 0; - ascii_hdf_dataset->CloseOnDisk(); - ascii_hdf_dataset = 0; - hdf_sco_group->CloseOnDisk(); hdf_sco_group = 0; hdf_group->CloseOnDisk();