Changeset 1787 for trunk


Ignore:
Timestamp:
09/12/11 09:47:24 (6 months ago)
Author:
Freddie Akeroyd
Message:

Write a single space for empty strings (rather than an empty node) - this is
to avoid a read error (no userData) when converting back to e.g. HDF5. Refs #314

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/nxxml.c

    r1769 r1787  
    357357NXstatus  NXXclosegroup (NXhandle fid){ 
    358358  pXMLNexus xmlHandle = NULL; 
    359   mxml_node_t *newGroup = NULL; 
    360359 
    361360  xmlHandle = (pXMLNexus)fid; 
     
    750749  pNXDS dataset; 
    751750  int i, offset, length; 
    752   char *pPtr = NULL; 
    753751  xmlHandle = (pXMLNexus)fid; 
    754752  assert(xmlHandle); 
     
    818816        length *= dim[i]; 
    819817      } 
    820       pPtr = (char *)malloc((length+1)*sizeof(char)); 
    821       if(pPtr != NULL){ 
    822         memcpy(pPtr,data,length); 
    823         pPtr[length] = '\0'; 
    824         mxmlSetOpaque(userData,(const char *)pPtr); 
    825         free(pPtr); 
     818      /* we seem to have trouble reading an empty node back (no userData), so make sure we have at least a single space present even for empty strings */ 
     819      if (length == 0) 
     820      { 
     821        mxmlSetOpaque(userData," "); 
     822      } 
     823      else 
     824      { 
     825        pPtr = (char *)malloc((length+1)*sizeof(char)); 
     826        if(pPtr != NULL){ 
     827          memcpy(pPtr,data,length); 
     828          pPtr[length] = '\0'; 
     829          mxmlSetOpaque(userData,(const char *)pPtr); 
     830          free(pPtr); 
     831        } 
    826832      } 
    827833    } 
     
    985991  the addressing and type conversion implemented in nxdataset 
    986992---------------------------------------------------------------------*/  
    987 static pNXDS makeSlabData(pNXDS dataset, void *data, int64_t size[]){ 
     993static pNXDS makeSlabData(pNXDS dataset, void *data, const int64_t size[]){ 
    988994  pNXDS slabData = NULL; 
    989995  int rank, i; 
     
    11251131----------------------------------------------------------------------*/ 
    11261132static void getSlabData(pNXDS dataset, pNXDS slabData, int dim, 
    1127                         int64_t start[],  
     1133                        const int64_t start[],  
    11281134                        int64_t sourcePos[],int64_t targetPos[]){ 
    11291135  int64_t i, rank, length; 
     
    17771783  int stackPtr; 
    17781784  mxml_node_t *current = NULL; 
    1779   char *pathString = NULL, *result = NULL; 
     1785  char *result = NULL; 
    17801786 
    17811787  path = (mxml_node_t **)malloc(NXMAXSTACK*sizeof(mxml_node_t *)); 
Note: See TracChangeset for help on using the changeset viewer.