Salome HOME
Mini bug fix: MEDFileUMesh should load correclty a mesh with empty coords.
authorabn <adrien.bruneton@cea.fr>
Wed, 23 Sep 2015 07:43:58 +0000 (09:43 +0200)
committerabn <adrien.bruneton@cea.fr>
Wed, 23 Sep 2015 08:52:44 +0000 (10:52 +0200)
src/MEDLoader/MEDFileMeshLL.cxx
src/MEDLoader/Swig/MEDLoaderTest4.py

index 16fef5d9db152d182d5a78316cd32dc0e2e2bf92..639e0f7fa224bfd15d503025c00bbab29bddd6dd 100644 (file)
@@ -336,7 +336,8 @@ void MEDFileUMeshL2::loadCoords(med_idt fid, int mId, const std::vector<std::str
   _coords=DataArrayDouble::New();
   _coords->alloc(nCoords,spaceDim);
   double *coordsPtr(_coords->getPointer());
-  MEDFILESAFECALLERRD0(MEDmeshNodeCoordinateRd,(fid,mName.c_str(),dt,it,MED_FULL_INTERLACE,coordsPtr));
+  if (nCoords)
+    MEDFILESAFECALLERRD0(MEDmeshNodeCoordinateRd,(fid,mName.c_str(),dt,it,MED_FULL_INTERLACE,coordsPtr));
   if(MEDmeshnEntity(fid,mName.c_str(),dt,it,MED_NODE,MED_NO_GEOTYPE,MED_FAMILY_NUMBER,MED_NODAL,&changement,&transformation)>0)
     {
       _fam_coords=DataArrayInt::New();
index 3e2d5f4e6b15a04235e54d346ad6d0a3eadfdc89..7fbc0edc06f33777b339e9222b22e82572ce3c62 100644 (file)
@@ -5114,6 +5114,20 @@ class MEDLoaderTest4(unittest.TestCase):
             pass
         pass
 
+    def testEmptyMesh(self):
+      fname = "empty_mesh.med" 
+      m = MEDCouplingUMesh('toto', 2)
+      m.setCoords(DataArrayDouble([], 0, 2))
+      m.setConnectivity(DataArrayInt([]), DataArrayInt([0]))
+      mfu = MEDFileUMesh()
+      mfu.setMeshAtLevel(0, m)
+      mfu.write(fname, 2)
+      mfu2 = MEDFileUMesh(fname)
+      self.assertEqual('toto', mfu2.getName())
+      lvl = mfu2.getNonEmptyLevels()
+      self.assertEqual((), lvl)
+    
     pass
 
-unittest.main()
+if __name__ == "__main__":
+  unittest.main()