Skip to content

Commit

Permalink
Merge pull request #396 from PeterC-DLS/master
Browse files Browse the repository at this point in the history
Make check work for copied datatype IDs to fix #386
  • Loading branch information
eugenwintersberger committed Nov 19, 2015
2 parents 78eecee + a5ba1d9 commit e78a23e
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
10 changes: 7 additions & 3 deletions src/napi5.c
Original file line number Diff line number Diff line change
Expand Up @@ -2489,6 +2489,7 @@ NXstatus NX5getattra(NXhandle handle, char* name, void* data)
hid_t memtype_id, filespace, datatype;
H5T_class_t tclass;
hsize_t ndims, dims[H5S_MAX_RANK];
htri_t is_vlen_str = 0; /* false */
char **vstrdata = NULL;

pFile = NXI5assert(handle);
Expand All @@ -2508,7 +2509,10 @@ NXstatus NX5getattra(NXhandle handle, char* name, void* data)
NXReportError("ERROR: unable to read dims");
return NX_ERROR;
}
if (ndims == 0 && H5Tis_variable_str(datatype)) {

is_vlen_str = H5Tis_variable_str(datatype);
if (ndims == 0 && is_vlen_str) {
/* this assumes a fixed size - is this dangerous? */
char *strdata = calloc(512, sizeof(char));
status = H5Aread(pFile->iCurrentA, H5S_ALL, &strdata);
if (status >= 0)
Expand All @@ -2523,7 +2527,7 @@ NXstatus NX5getattra(NXhandle handle, char* name, void* data)
}
tclass = H5Tget_class(datatype);
/* stop gap kludge for fixed length strings */
if (tclass == H5T_C_S1) {
if (tclass == H5T_STRING && !is_vlen_str) {
char *datatmp = NULL;
status = readStringAttribute(pFile->iCurrentA, &datatmp);
if (status < 0)
Expand All @@ -2535,7 +2539,7 @@ NXstatus NX5getattra(NXhandle handle, char* name, void* data)

memset(iStart, 0, H5S_MAX_RANK * sizeof(int));
/* map datatypes of other plateforms */
if (H5Tis_variable_str(datatype)) {
if (is_vlen_str) {
vstrdata = (char **)malloc((size_t) dims[0] * sizeof(char *));
memtype_id = H5Tcopy(H5T_C_S1);
H5Tset_size(memtype_id, H5T_VARIABLE);
Expand Down
12 changes: 12 additions & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ if(WITH_HDF5)
target_link_libraries(napi_test_hdf5 NeXus_Shared_Library
${NAPI_LINK_LIBS})
add_test(NAME "NAPI-C-HDF5-test" COMMAND napi_test_hdf5)
add_executable(napi_attra_test_hdf5 napi_attra_test.c)
target_link_libraries(napi_attra_test_hdf5 NeXus_Shared_Library
${NAPI_LINK_LIBS})
add_test(NAME "NAPI-C-HDF5-attra-test" COMMAND napi_attra_test_hdf5)
endif()

if(WITH_HDF4)
Expand All @@ -53,6 +57,10 @@ if(WITH_HDF4)
${NAPI_LINK_LIBS})
add_test(NAME "NAPI-C-HDF4-test"
COMMAND napi_test_hdf4)
add_executable(napi_attra_test_hdf4 napi_attra_test.c)
target_link_libraries(napi_attra_test_hdf4 NeXus_Shared_Library
${NAPI_LINK_LIBS})
add_test(NAME "NAPI-C-HDF4-attra-test" COMMAND napi_attra_test_hdf4)
endif()

if(WITH_MXML)
Expand All @@ -66,6 +74,10 @@ if(WITH_MXML)
${NAPI_LINK_LIBS})
add_test(NAME "NAPI-C-MXML-TABLE-test"
COMMAND napi_test-xml-table)
add_executable(napi_attra_test_xml napi_attra_test.c)
target_link_libraries(napi_attra_test_xml NeXus_Shared_Library
${NAPI_LINK_LIBS})
add_test(NAME "NAPI-C-MXML-attra-test" COMMAND napi_attra_test_xml)
endif()

#------------------------------------------------------------------------------
Expand Down

0 comments on commit e78a23e

Please sign in to comment.