]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
Correction of bug detected by ParaMEDMEMTest.
authorageay <ageay>
Mon, 16 Aug 2010 12:39:07 +0000 (12:39 +0000)
committerageay <ageay>
Mon, 16 Aug 2010 12:39:07 +0000 (12:39 +0000)
src/MEDLoader/MEDLoader.cxx
src/MEDLoader/MEDLoaderBase.cxx
src/MEDLoader/MEDLoaderBase.hxx

index e9a8cf6540ea18d269dbe6d0cda83d89b0e1daf3..1e3856297deaa852e54ac75714bfad01ab1d6db4 100644 (file)
@@ -596,17 +596,15 @@ void MEDLoaderNS::readFieldDoubleDataInMedFile(const char *fileName, const char
   for(int i=0;i<nbFields;i++)
     {
       med_int ncomp=MEDnChamp(fid,i+1);
-      infos.resize(ncomp);
       char *comp=new char[ncomp*MED_TAILLE_PNOM+1];
       char *unit=new char[ncomp*MED_TAILLE_PNOM+1];
       MEDchampInfo(fid,i+1,nomcha,&typcha,comp,unit,ncomp);
-      for(int i=0;i<ncomp;i++)
-        infos[i]=MEDLoaderBase::buildUnionUnit(comp+i*MED_TAILLE_PNOM,unit+i*MED_TAILLE_PNOM);
       std::string curFieldName=MEDLoaderBase::buildStringFromFortran(nomcha,MED_TAILLE_NOM+1);
-      delete [] comp;
-      delete [] unit;
       if(curFieldName==fieldName)
         {
+          infos.resize(ncomp);
+          for(int i=0;i<ncomp;i++)
+            infos[i]=MEDLoaderBase::buildUnionUnit(comp+i*MED_TAILLE_PNOM,MED_TAILLE_PNOM,unit+i*MED_TAILLE_PNOM,MED_TAILLE_PNOM);
           bool found=false;
           for(int j=0;j<tabTypeLgth[typeOfOutField] && !found;j++)
             {
@@ -658,6 +656,8 @@ void MEDLoaderNS::readFieldDoubleDataInMedFile(const char *fileName, const char
                 }
             }
         }
+      delete [] comp;
+      delete [] unit;
     }
   MEDfermer(fid);
 }
@@ -832,7 +832,7 @@ void MEDLoaderNS::readUMeshDataInMedFile(med_idt fid, med_int meshId, DataArrayD
   for(int i=0;i<spaceDim;i++)
     {
       std::string n,u;
-      std::string info=MEDLoaderBase::buildUnionUnit(comp+i*MED_TAILLE_PNOM,unit+i*MED_TAILLE_PNOM);
+      std::string info=MEDLoaderBase::buildUnionUnit(comp+i*MED_TAILLE_PNOM,MED_TAILLE_PNOM,unit+i*MED_TAILLE_PNOM,MED_TAILLE_PNOM);
       coords->setInfoOnComponent(i,info.c_str());
     }
   delete [] comp;
index 69b679eab9d86f554a40fc08a6821fa58660fd52..5bb30ebbd0d0c4b67d27c8e3d5013d3cf1a2d1c7 100644 (file)
@@ -73,13 +73,14 @@ char *MEDLoaderBase::buildEmptyString(int lgth)
   return ret;
 }
 
-std::string MEDLoaderBase::buildUnionUnit(const char *name, const char *unit)
+std::string MEDLoaderBase::buildUnionUnit(const char *name, int nameLgth, const char *unit, int unitLgth)
 {
-  std::string ret(name);
-  if(unit[0]=='\0')
+  std::string ret(buildStringFromFortran(name,nameLgth));
+  std::string unitCpp(buildStringFromFortran(unit,unitLgth));
+  if(unitCpp[0]=='\0')
     return ret;
   ret+=" (";
-  ret+=unit;
+  ret+=unitCpp;
   ret+=")";
   return ret;
 }
index 896b65059998cd97aa9e9568be2e0b421a78fe8a..fc45856dab2a50d6cb88238c6f7b5c03dbd3b71b 100644 (file)
@@ -29,7 +29,7 @@ class MEDLoaderBase
 public:
   static int getStatusOfFile(const char *fileName);
   static char *buildEmptyString(int lgth);
-  static std::string buildUnionUnit(const char *name, const char *unit);
+  static std::string buildUnionUnit(const char *name, int nameLgth, const char *unit, int unitLgth);
   static void splitIntoNameAndUnit(const std::string& s, std::string& name, std::string& unit);
   static void strip(std::string& s);
   static void safeStrCpy(const char *src, int maxLgth, char *dest, int behaviour) throw(INTERP_KERNEL::Exception);