Changeset 1785 for trunk


Ignore:
Timestamp:
08/12/11 17:16:11 (6 months ago)
Author:
Freddie Akeroyd
Message:

Fix bug in NX5nativeisexternallink. Refs #311

Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/napi.c

    r1769 r1785  
    14631463  if(attStatus == NX_OK){ 
    14641464    length = strlen(nxurl); 
    1465     if(length > urlLen){ 
     1465    if(length >= urlLen){ 
    14661466      length = urlLen - 1; 
    14671467    } 
     
    14991499  if(attStatus == NX_OK){ 
    15001500    length = strlen(nxurl); 
    1501     if(length > urlLen){ 
     1501    if(length >= urlLen){ 
    15021502      length = urlLen - 1; 
    15031503    } 
  • trunk/src/napi5.c

    r1769 r1785  
    21482148     herr_t iRet; 
    21492149     pNexusFile5 pFile; 
    2150      char pBuffer[256];  
    21512150     hid_t openwhere; 
    21522151 
     
    22002199     H5L_info_t link_buff; 
    22012200     char linkval_buff[1024]; 
    2202      const char *filepath, *objpath; 
     2201     const char *filepath = NULL, *objpath = NULL; 
     2202     size_t val_size; 
    22032203 
    22042204     pFile = NXI5assert(fileid); 
     2205     memset(url, 0, urllen); 
    22052206 
    22062207     ret = H5Lget_info(pFile->iFID, name, &link_buff, H5P_DEFAULT); 
     
    22092210     } 
    22102211 
    2211      ret = H5Lget_val(pFile->iFID, name, linkval_buff, sizeof(linkval_buff), H5P_DEFAULT); 
    2212      if (ret < 0) { 
     2212     val_size = link_buff.u.val_size; 
     2213     if (val_size > sizeof(linkval_buff)) { 
     2214       NXReportError("ERROR: linkval_buff too small"); 
    22132215       return NX_ERROR; 
    22142216     } 
    22152217 
    2216      ret = H5Lunpack_elink_val(linkval_buff, sizeof(linkval_buff), 0, &filepath, &objpath); 
    2217      if (ret < 0 || link_buff.type != H5L_TYPE_EXTERNAL) { 
     2218     ret = H5Lget_val(pFile->iFID, name, linkval_buff, val_size, H5P_DEFAULT); 
     2219     if (ret < 0) { 
     2220       NXReportError("ERROR: H5Lget_val failed"); 
    22182221       return NX_ERROR; 
    22192222     } 
    22202223 
    2221     snprintf(url, urllen, "nxfile://%s#%s", filepath, objpath); 
     2224     ret = H5Lunpack_elink_val(linkval_buff, val_size, NULL, &filepath, &objpath); 
     2225     if (ret < 0) { 
     2226       NXReportError("ERROR: H5Lunpack_elink_val failed"); 
     2227       return NX_ERROR; 
     2228     } 
     2229 
     2230    snprintf(url, urllen-1, "nxfile://%s#%s", filepath, objpath); 
    22222231    return NX_OK; 
    22232232      
Note: See TracChangeset for help on using the changeset viewer.