Salome HOME
BugID: IPAL9380, modified methods Save and Load, replaced HDF_INT32 by HDF_STRING
authorsrn <srn@opencascade.com>
Mon, 18 Jul 2005 10:53:11 +0000 (10:53 +0000)
committersrn <srn@opencascade.com>
Mon, 18 Jul 2005 10:53:11 +0000 (10:53 +0000)
src/SMESH_I/SMESH_Gen_i.cxx

index 328c65d..a51c17b 100644 (file)
@@ -1544,7 +1544,7 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent,
                   // Write datasets
                   if ( nbNodes )
                   {
                   // Write datasets
                   if ( nbNodes )
                   {
-                    aSize[ 0 ] = nbNodes;
+                    aSize[ 0 ] = nbNodes*sizeof(int);
                     // IDS
                     string aDSName( onFace ? "Nodes on Faces" : "Nodes on Edges");
                     aDataset = new HDFdataset( (char*)aDSName.c_str(), aGroup, HDF_STRING, aSize, 1 );
                     // IDS
                     string aDSName( onFace ? "Nodes on Faces" : "Nodes on Edges");
                     aDataset = new HDFdataset( (char*)aDSName.c_str(), aGroup, HDF_STRING, aSize, 1 );
@@ -1552,6 +1552,7 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent,
                     aDataset->WriteOnDisk( aNodeIDs );
                     aDataset->CloseOnDisk();
 
                     aDataset->WriteOnDisk( aNodeIDs );
                     aDataset->CloseOnDisk();
 
+                   aSize[ 0 ] = nbNodes;
                     // U Positions
                     aDSName = ( onFace ? "Face U positions" : "Edge positions");
                     aDataset = new HDFdataset( (char*)aDSName.c_str(), aGroup, HDF_FLOAT64, aSize, 1);
                     // U Positions
                     aDSName = ( onFace ? "Face U positions" : "Edge positions");
                     aDataset = new HDFdataset( (char*)aDSName.c_str(), aGroup, HDF_FLOAT64, aSize, 1);
@@ -2271,16 +2272,17 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent,
                 }
                 else // NODE IDS
                 {
                 }
                 else // NODE IDS
                 {
-                  int* ids = new int [ aDataset->GetSize() ];
+                 int aSize = aDataset->GetSize()/sizeof(int);
+                 int* ids = new int [aSize];
                   aDataset->ReadFromDisk( ids );
                   // on face or nodes?
                   if ( strncmp( aDSName, aEid_DSName, strlen( aEid_DSName )) == 0 ) {
                     aEids = ids;
                   aDataset->ReadFromDisk( ids );
                   // on face or nodes?
                   if ( strncmp( aDSName, aEid_DSName, strlen( aEid_DSName )) == 0 ) {
                     aEids = ids;
-                    nbEids = aDataset->GetSize();
+                    nbEids = aSize;
                   }
                   else {
                     aFids = ids;
                   }
                   else {
                     aFids = ids;
-                    nbFids = aDataset->GetSize();
+                    nbFids = aSize;
                   }
                 }
               } // loop on 5 datasets
                   }
                 }
               } // loop on 5 datasets