Legend:
- Unmodified
- Added
- Removed
-
trunk/src/napi.c
r1769 r1785 1463 1463 if(attStatus == NX_OK){ 1464 1464 length = strlen(nxurl); 1465 if(length > urlLen){1465 if(length >= urlLen){ 1466 1466 length = urlLen - 1; 1467 1467 } … … 1499 1499 if(attStatus == NX_OK){ 1500 1500 length = strlen(nxurl); 1501 if(length > urlLen){1501 if(length >= urlLen){ 1502 1502 length = urlLen - 1; 1503 1503 } -
trunk/src/napi5.c
r1769 r1785 2148 2148 herr_t iRet; 2149 2149 pNexusFile5 pFile; 2150 char pBuffer[256];2151 2150 hid_t openwhere; 2152 2151 … … 2200 2199 H5L_info_t link_buff; 2201 2200 char linkval_buff[1024]; 2202 const char *filepath, *objpath; 2201 const char *filepath = NULL, *objpath = NULL; 2202 size_t val_size; 2203 2203 2204 2204 pFile = NXI5assert(fileid); 2205 memset(url, 0, urllen); 2205 2206 2206 2207 ret = H5Lget_info(pFile->iFID, name, &link_buff, H5P_DEFAULT); … … 2209 2210 } 2210 2211 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"); 2213 2215 return NX_ERROR; 2214 2216 } 2215 2217 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"); 2218 2221 return NX_ERROR; 2219 2222 } 2220 2223 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); 2222 2231 return NX_OK; 2223 2232
Note: See TracChangeset
for help on using the changeset viewer.
