X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FMEDFileUtilities.cxx;h=d309257f5c9b47bc96286e77bf1c67d924bbbc78;hb=ac1df6b0ba8b337555fb39610c89f678d889580d;hp=44c4a776bf18d5f80ae91593dde8d951a056a58b;hpb=0fb8ef9bb978b04e475c7f6d9ca5d8bd6f36bcf5;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/MEDFileUtilities.cxx b/src/MEDLoader/MEDFileUtilities.cxx index 44c4a776b..d309257f5 100644 --- a/src/MEDLoader/MEDFileUtilities.cxx +++ b/src/MEDLoader/MEDFileUtilities.cxx @@ -190,7 +190,7 @@ void MEDCoupling::MEDFileWritableStandAlone::write(const std::string& fileName, void MEDCoupling::MEDFileWritableStandAlone::write30(const std::string& fileName, int mode) const { med_access_mode medmod(MEDFileUtilities::TraduceWriteMode(mode)); -#if MED_NUM_MAJEUR>=3 && MED_NUM_MINEUR>=2 && MED_NUM_RELEASE>=1 +#if MED_NUM_MAJEUR>3 || ( MED_NUM_MAJEUR==3 && ( (MED_NUM_MINEUR==2 && MED_NUM_RELEASE>=1) || MED_NUM_MINEUR>=3) ) MEDFileUtilities::AutoFid fid(MEDfileVersionOpen(fileName.c_str(),medmod,3,0,0)); writeLL(fid); #else @@ -205,10 +205,20 @@ MEDCoupling::MCAuto MEDCoupling::MEDFileWritableStan memfile.app_image_ptr=0; memfile.app_image_size=0; // - MEDFileUtilities::AutoFid fid(MEDmemFileOpen(DFT_FILENAME_IN_MEM,&memfile,MED_FALSE,MED_ACC_CREAT)); - writeLL(fid); + std::string dftFileName(GenerateUniqueDftFileNameInMem()); + {// very important to let this braces ! The AutoFid destructor must be called, to have a "clean" memfile.app_image_ptr pointer embedded in the returned object. + MEDFileUtilities::AutoFid fid(MEDmemFileOpen(dftFileName.c_str(),&memfile,MED_FALSE,MED_ACC_CREAT)); + writeLL(fid); + } // MEDCoupling::MCAuto ret(MEDCoupling::DataArrayByte::New()); ret->useArray(reinterpret_cast(memfile.app_image_ptr),true,C_DEALLOC,memfile.app_image_size,1); return ret; } + +std::string MEDCoupling::MEDFileWritableStandAlone::GenerateUniqueDftFileNameInMem() +{ + static int ii=0; + std::ostringstream oss; oss << DFT_FILENAME_IN_MEM << "_" << ii++; + return oss.str(); +}